Ax 3.0_presentDevelop

advertisement
Средства разработки
Компания
Тренер
E-mail
1
Section Heading
План занятий
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Конфигурационные ключи
Стандарты разработки
2
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Конфигурационные ключи
Стандарты разработки
3
Section Heading
MorphX – интегрированная среда разработки
•
Независимый словарь
данных и объектов
Единая база данных
Единое приложение
Единый исходный код
Единый набор инструментов
•
Несколько интерфейсов
Windows
All In One
Web
WAP
4
Section Heading
MorphX объединяет все этапы создания
программного продукта
Полный набор средств для
создания приложений любого
уровня сложности
• Дизайнер форм и отчетов
• Специализированный
текстовый редактор
• Компилятор
• Отладчик
• Редактор контекстной справки
5
Section Heading
Основные объекты AOT
•
•
•
•
•
•
•
•
•
•
Data Dictionary
Macros
Jobs
Classes
Queries
Forms
Reports
Menus
Menu Items
Web
6
Section Heading
Создание нового приложения
1. Разработка структуры данных
2. Создание типов данных и
таблиц в DataDictionary
3. Cоздание классов для
обработки данных
4. Создание форм для диалога с
пользователем
5. Создание отчетов для
извлечения и анализа данных
6. Создание меню для
организации доступа к новой
функциональности
7
Section Heading
Средства ведения проектов
•
•
•
Вся модификация в одном
окне
Удобный перенос
изменений на другие
версии
Позволяют собрать вместе
все объекты, реализующие
определенную
функциональность
8
Section Heading
Архитектура слоев
USP
User Patch
USR
User Solutions
CUP
Customer Patch
CUS
Customer Solutions
VAP
Var Patch
VAR
Var Solutions
BUP
Business Patch
BUS
Business Solutions
LOP
Local Patch
LOS
Local Solutions
DIP
Distributor Patch
DIS
Distributor Solutions Требования законодательства страны
GLP
Global Patch
GLS
Global Solutions
SYP
Standard Patch
SYS
Standard Application Стандартная функциональность
Пользовательские модификации
Слой клиентских модификаций
Слой партнерских модификаций
Вертикальные решения партнера
Интегрированные решения страны
Слой интегрированных решений
9
Section Heading
Исполнение программного кода
1 index file:
axapd.aoi
10
Section Heading
Сравнение модификаций разных слоев
11
Section Heading
Экспорт объектов приложения
•
•
Позволяет сохранить прикладные объекты
репозитария во внешнем файле для использования
их в других приложениях или в качестве резервной
копии
Возможен экспорт как отдельного или нескольких
выделенных объектов из AOT, так и всех объектов,
входящих в проект
12
Section Heading
Импорт объектов приложения
•
•
Посредством импорта производится загрузка в
систему ранее экспортированных объектов
приложения
Импорт объектов приложения производится в слой,
установленный в конфигурационной утилите
13
Section Heading
Визуальное моделирование с MorphXplorer
•
•
•
Создание моделей данных и
связей между ними в
стандарте UML
Для построения моделей
используются существующие
объекты таблиц и классов
репозитария
Связи устанавливаются на
основе данных таблиц
перекрестных ссылок
14
Section Heading
Меточные файлы
•
•
•
Вынесенный за приложение текстовый
интерфейс
Поддержка многоязыкового интерфейса
Повторное использование меток
Метки на английском языке,
файл AXSYSen-us.ald
Метки на русском языке,
файл AXSYSru.ald
@SYS30 Person '%1' does not exist.
@SYS30 Сотрудник '%1' не
@SYS31 Variance
@SYS32 Group by
@SYS35 Default lead time or lead
time in number of days
существует.
@SYS31 Расхождение
@SYS32 Группировать по
@SYS35 Время упреждения в днях
15
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Функциональные ключи
Стандарты разработки
16
Section Heading
Объектно–ориентированный язык X++
•
•
•
Принципы инкапсуляции и
наследования
Легкий синтаксис
Встроенный язык запросов
(SQL)
Java
Syntax
C++
Syntax
SQL
Syntax
17
Section Heading
Типы данных
•
•
•
Скалярные типы данных
Составные типы данных
Расширенные типы данных
18
Section Heading
Скалярные типы данных
•
•
•
•
•
•
•
boolean
integer
real
date
timeOfDay
str
enum
логический тип
тип целых чисел
действительные
дата
время
строка
перечисление
true, false
-1000, 0, 1, 123
0.0, 5.789
1\1\1901..31\12\2154
часы:мин:сек
«MorphX»
Enum::Literal
Перечислимый тип данных Enum создается в узле
Base Enums репозитария прикладных объектов
19
Section Heading
Скалярные типы данных. Определение
•
Определение скалярной переменной:
тип_переменной
•
имя_переменной {= значение};
Примеры:
boolean bVar1, bVar2 = true;
int
iVar1, iVar2 = -123;
real
rVar1, rVar2 = 4.56;
date
dVar1
= 31\12\2002;
timeOfDay tVar1
= 0;
str
sVar1
= “Declare string variable”;
NoYes
eVar1
= NoYes::Yes;
20
Section Heading
Составные типы данных. Массивы
Массивы - Список элементов одного типа
•
Динамические
тип_массива
тип_массива
•
Фиксированные
тип_массива
тип_массива
•
имя_массива[]
имя_массива[, memory]
имя_массива[length]
имя_массива[length, memory]
Примеры:
int
real
iArray1[], iArray2[100], iArray3[100, 20];
rArray4[] = 0;
21
Section Heading
Составные типы данных. Контейнеры
Контейнеры - Динамический список элементов
базисного или составного типа
•
Определение переменной типа контейнер
container имя_контейнера = [значение1, значение2, …];
•
Примеры:
container c1, c2[];
container c3 = [false, 16, 3.14, “MorphX”];
22
Section Heading
Составные типы данных. Контейнеры
•
Функции для работы с контейнером
container c;
Объявление контейнера
conins(c, n, value); Вставка нового элемента
condel(c, n, num);
Удаление элементов из контейнера
conpoke(c, n, value); Замена существующего элемента
conpeek(c, n);
Извлечение значения элемента
confind(с, value);
Поиск последовательности элементов
conlen(с);
Число элементов контейнера
с = connull();
Удаление из памяти,
где
n – индекс элемента, value – значение элемента,
num – кол-во удаляемых позиций
23
Section Heading
Составные типы данных. Классы
•
Определение переменной типа класс:
Имя_Класса имя_переменной_класса;
•
Создание объекта класса:
имя_переменной_класса = new Имя_Класса();
•
Примеры:
LedgerVoucher
ledgerVoucher;
ledgerVoucher = new LedgerVoucher();
24
Section Heading
Составные типы данных. Таблицы
•
Определение переменной типа таблица:
Имя_Таблицы имя_переменной_таблицы;
•
Примеры:
LedgerTable
ledgerTable;
Common
common;
25
Section Heading
Расширенные типы данных
•
•
•
•
•
•
РТД создается в узле Extended Data Types репозитария
прикладных элементов
В основе РТД лежат скалярные типы данных и
контейнер
РТД имеет уникальное пользовательское наименование.
Тем самым РТД реализует пользовательский тип
данных MorphX
РТД по умолчанию определяет формат отображения
данных на формах и отчетах
РТД можно наследовать. При этом потомок РТД
наследует свойства родителя РТД.
Объявление переменных РТД аналогично объявлению
скалярных типов данных
26
Section Heading
Операторы X++ по старшинству
postfix
unary
creation
multiplicative
additive
shift
relational
equality
bitwise AND
bitwise XOR
botwise OR
logical
conditional
assignment
[]
.
()
expr++
expr-
++expr
new
*
+
<<
<
==
&
^
|
&&
?
=
--expr
-expr
~
!
/
>>
>
!=
%
||
:
+=
<=
-=
>=
27
Section Heading
Синтаксис X++
•
Операторы ветвления
if (expression) statement [else statement]
switch (expression) {case expression : statement}
expression ? statement1 : statement2
•
Циклы
while (expression) statement
do {statement} while (expression)
for (initialization; expression; update) statement
•
Исключения
try {throw exception} … catch (expression) statement
28
Section Heading
Синтаксис предложения SELECT
SelectStatement = select Parameters
Parameters
= [ [ FindOptions ] [ FieldList from ] ] TableVariable
[IndexClause]
[ Options ] [ Where Clause ] [ JoinClause ]
FindOptions
= reverse | firstfast | firstonly | forupdate | nofetch
FieldList
= Field { , Field } | *
Field
= Aggregate ( FieldIdentifier ) | FieldIdentifier
Aggregate
= sum | avg | minof | maxof | count
Options
= ( order by | group by ) FieldIdentifier [ Direction ]
{ , FieldIdentifier [ Direction ] }
IndexCaluse
= index Idx | index hint idx
Direction
= asc | desc
WhereClause = where Expression
JoinClause
= [exists | not exists | outer ] join Parameters
29
Section Heading
Транзакции
ttsbegin
- начало транзакции
ttscommit - конец успешной транзакции, все
изменения сохранены в БД
ttsabort
(throw)
- отмена транзакции, все
изменения в пределах транзакции
отменены
Допускаются вложенные транзакции
30
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Функциональные ключи
Стандарты разработки
31
Section Heading
Макросы
#DEFINE
Объявление макроконстанты
#UNDEF
Отмена объявления макроконстанты
#MACROLIB
Загрузка макробиблиотеки
#GLOBALMACRO
Определение глобального макроопределения
#LOCALMACRO
Определение локального макроопределения
#ENDMACRO
Идентифицирует окончание макроопределения
#IF
#IF.EMPTY()
Условное подключение макроопределения
#IFNOT.EMPTY()
#ENDIF
Окончание макроопределения #IF
#LINENUMBER
Возвращает текущий номер строки. Используется для отладки.
32
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Конфигурационные ключи
Стандарты разработки
33
Section Heading
Таблицы (Tables)
•
•
•
•
•
Таблицы могут быть временными и
постоянными
Постоянные таблицы имеют отображение на
сервере БД
Временные таблицы обрабатывает Axapta.
Данные в этих таблицах не сохраняются
после работы
С точки зрения программиста работа с
временными и постоянными таблицами
практически не различается
Все таблицы наследованы от системной
таблицы Common
34
Section Heading
Поля таблиц (Tables/Fields)
Поля таблицы могут иметь базовый тип:
•
•
•
•
•
•
•
String
Integer
Real
Date
Time
Enum
Container
35
Section Heading
Группы полей на таблицах
•
•
•
Поля в таблицах объединяются в группы
Группы полей автоматически
обрабатываются генератором форм
При добавлении нового поля в группу во
всех элементах системы, использующих эту
группу, добавляется новое поле
36
Section Heading
Индексы на таблицах
•
•
•
•
Индексы определяются на некотором
наборе полей таблицы – ключе
Свойство AllowDuplicates показывает,
может ли таблица иметь несколько
записей с одинаковым ключом
Индекс может быть неактивен
Доступность индекса также зависит от
того, доступен ли связанный с ним
функциональный ключ
37
Section Heading
Отношения на таблицах
•
•
•
Отношения показывают, каким образом поля
данной таблицы связаны с полями других
таблиц
Отношения между полями могут быть заданы
как на самой таблице, так и на расширенном
типе данных поля
Отношения на таблице могут быть трех типов:
Normal
Field fixed
Related field fixed
LedgerTable
1
*
LedgerTrans
38
Section Heading
Действия при удалении
•
•
None
Cascade
- нет действия
- каскадное удаление
строк в связанных таблицах
•
Restricted
- удаление лишь при
отсутствии связанных строк
•
Cascade + Restricted
39
Section Heading
Методы на таблицах
•
•
При работе с табличными данными система
генерирует ряд событий. Для каждого события
определен собственный метод
Примерами таких методов служат Update(),
Insert(), Delete()
Эти и другие методы на таблицах могут быть
перекрыты программистом
•
Помимо событийных методов можно создавать
собственные методы
Такие методы могут быть динамическими и
статическими
40
Section Heading
Maps
Если для нескольких таблиц предполагается
однотипная обработка, то эти таблицы
целесообразно объединить в Map
Table 3
Table 2
Map
Table 1
41
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Функциональные ключи
Стандарты разработки
42
Section Heading
Формы (Forms)
•
Формы имеют три составляющие:
Методы
Системные (classDeclaration, init, и пр)
Пользовательские
Источники данных
Дизайн
•
Все составляющие задаются статически при
построении формы. Но в процессе работы
формы программным образом можно изменить
как дизайн, так и источники данных
43
Section Heading
Источники данных на формах
•
•
•
Источники данных предоставляют данные для
формы (заполнение)
Каждый источник данных является запросом,
состоящим из одной таблицы. Это позволяет
пользователю использовать фильтры и
сортировки
Источники данных можно соединять (join)
44
Section Heading
Дизайн форм
•
•
Дизайн на форме определяет ее
внешний вид и поведение
Дизайн является древовидной
структурой, узлами и листьями
которой являются control-элементы
Примерами таких элементов служат
закладки, кнопки, элементы ввода
текстовой строки, числа, даты и
прочее
45
Section Heading
Методы на элементах форм
•
•
Каждый элемент формы имеет специальный
узел Methods, где содержится программный код
Каждый элемент формы (источник данных,
control и даже сама форма) имеет ряд
предопределенных методов, соответствующих
событиям внешнего мира
щелчок мыши
drag’n’drop …
46
Section Heading
Методы на элементах форм
•
При работе с формой система генерирует ряд
событий. Для каждого события определен
собственный системный метод, который может
быть перекрыт разработчиком
Нажали кнопку OK
CloseOK
кнопку Отменить
CloseCancel
CanClose
CanClose
Close
Close
47
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Конфигурационные ключи
Стандарты разработки
48
Section Heading
Запросы (Queries)
•
•
•
Запросы являются удобной альтернативой
использования оператора while select языка
X++
Запросы предоставляют пользователю
интерфейс для определения ограничения
выборки и сортировки данных
Запрос не выводит данные на устройство
вывода. Этим занимается тот элемент
системы, который использует данный запрос
(запросы в основном используются в классах и
отчетах)
49
Section Heading
Структура запросов
Запросы состоят из:
• Источников данных (таблицы). Источники
данных могут быть связаны между собой
• Методов. Существуют методы для
стандартных событий, также можно
создавать собственные методы
50
Section Heading
Виды запросов
Запросы могут быть:
• Статические.
В этом случае структура
запроса хранится в AOT
•
Динамические.
Структура запроса
создается программным
образом всякий раз,
когда работает данный
код
51
Section Heading
Работа с запросами
Для запуска и построения запросов
существуют специальные системные классы
• Классы Query и QueryRun служат для
инициализации запроса и запуска его на
исполнение
• Классы QueryBuild* позволяют создать
структуру запроса перед его исполнением
52
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Функциональные ключи
Стандарты разработки
53
Section Heading
Классы (Classes)
•
Классы в Axapta
выполняют основную
часть работы по
обработке данных и
обеспечению функций
54
Section Heading
Модификаторы места выполнения
•
Статические методы классов в
Axapta имеют специальный
дескриптор, обозначающий
место исполнения
программного кода
Server
Client
•
Класс, как элемент AOT, имеет
свойство RunOn,
принимающее такие же
значения (значение Called
from является значением по
умолчанию)
55
Section Heading
Наследование классов
•
Для наследования классов
применяется специальный
дескриптор extends
RRepLedgerPosting
RunBaseBatch
56
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Функциональные ключи
Стандарты разработки
57
Section Heading
Пункты меню (Menu Items)
•
•
Пункты меню являются листьями меню и
содержат ссылку на элемент системы
(форму, отчет, класс)
Пункты меню делятся на три категории:
Display. Ссылки на формы
Output. Ссылки на отчеты
Action. Ссылки на классы
•
Пункты меню связаны с
функциональными ключами
58
Section Heading
Меню (Menus)
•
Меню в системе является деревом,
состоящим из узлов (подменю) и листьев
(пункты меню, ссылки на меню)
59
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Конфигурационные ключи
Стандарты разработки
60
Section Heading
Средства разработки отчетов
•
•
•
Мастера создания
отчетов
Среда MorphX
Внешние приложения
61
Section Heading
Быстрые средства создания отчетов
•
Автоотчет
Позволяет мгновенно
получить отчет
интересующих Вас
справочников
•
Мастер создания отчетов
Пользователь имеет
возможность создавать
отчеты не прибегая к
программированию
62
Section Heading
Отчеты среды MorphX
•
Автоматический дизайн
Дизайн создаваемый во
время работы приложения
•
Сгенерированный дизайн
Дизайн сформированный
средствами разработки
63
Section Heading
Сгенерированный дизайн
Page Header
Section Group
Header
Prolog
Body
Epilog
Footer
Page Footer
64
Section Heading
Спецификация автоматического дизайна
Page header
Body
Page footer
Page header
Prolog
Report template
Epilog
Page footer
Page header
Prolog
Body
Report Design
Epilog
Page footer
65
Section Heading
Методы на отчетах
•
Основные методы на отчетах
Init Run
Fetch
Query
Print
Prompt Send
prompt
Execute
section
Время
66
Section Heading
Метод: Init
•
Инициализирует отчет
Init Run
Fetch
Query
Print
Prompt Send
prompt
Executesection
Время
67
Section Heading
Метод: Run
•
Производит запуск отчета
Init Run
Fetch
Query
Print
Prompt Send
prompt
Execute
section
Время
68
Section Heading
Метод: Fetch
•
•
•
Выполняет запрос
Выдает полученные записи в отчет
При прерывании отчета выдает ошибку
Init Run
Fetch
Query
Print
Prompt Send
prompt
Execute
section
Время
69
Section Heading
Метод: Query Prompt
•
•
Открывает диалог запроса
Выполнение отчета прерывается, если Query
Prompt возвращает false
Init Run
Fetch
Query
Print
Prompt Send
prompt
Execute
section
Время
70
Section Heading
Метод: Prompt
•
•
Открывает диалог печати
Выполнение отчета прерывается, если Prompt
возвращает false
Init Run
Fetch
Query
Print
Prompt Send
prompt
Execute
section
Время
71
Section Heading
Метод: Send
•
Выдает выбранные записи в отчет
Init Run
Fetch
Query
Print
Prompt Send
prompt
Execute
section
Время
72
Section Heading
Метод: Execute Section
•
•
Каждая секция имеет метод Execute Section
Execute Section записывает секцию и ее
содержание в отчет
Init Run
Fetch
Query
Print
Prompt Send
prompt
Execute
section
Время
73
Section Heading
Метод: Print
•
Выводит сгенерированный отчет в диалог
печати
Init Run
Fetch
Query
Print
Prompt Send
prompt
Execute
section
Время
74
Section Heading
Отчеты внешних приложений
•
•
Работа с COM-объектами
Документы MS Word и MS
Excel
75
Section Heading
Работа с COM-объектами
Технология COM позволяет Microsoft
Axapta использовать
функциональность внешних
приложений:
• интеграция с любыми Windowsприложениями, поддерживающими
COM
• повторное использование бизнеслогики
• встраивание ActiveX-компонентов в
формы Axapta
76
Section Heading
О технологии COM и DCOM
•
•
COM (Component Object Model) – это
спецификация Microsoft на взаимозаменяемые
компоненты, выросшая из стандарта связывания
объектов OLE. Объект в стандарте COM можно
разработать на любом языке программирования,
единственное условие – реализация
определенного набора неизменных интерфейсов
DCOM – стандарт организации распределенных
вычислений путем обращения к COM-объектам,
находящимся на удаленных ПК
77
Section Heading
Microsoft Axapta как COM-клиент
• Набор классов для
взаимодействия с COM объектами
COM
• COMDispFunction
• COMEnum2Object
• COMEnum2Variant
• COMError
•
• Элементы управления ActiveX в
формах
• Мастер оболочек для COM –
объектов
78
Section Heading
Microsoft Axapta как COM-сервер
Axapta Business Connector
Инкапсулирует бизнес-логику, предоставляя
внешним приложениям доступ к объектам
системы
•
IUnknown
IAxapta
IAxapta2
IAxaptaObject
IAxaptaRecord
IAxaptaContainer
IAxaptaBuffer
IAxaptaParameterList
Axapta Business
Connector
79
Section Heading
Документы MS Office
Выдача отчетов через
• MS Word
ComWordDocument_RU
•
MS Excel
ComExcelDocument_RU
80
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Конфигурационные ключи
Стандарты разработки
81
Section Heading
Управление безопасностью системы
Конфигурационные ключи (configuration keys)
•
•
•
Объединяют группу программных элементов системы, в сумме
предоставляющих некоторую функциональность
Включение/выключение функциональности
Контролируются лицензионными кодами
Ключи контроля доступа (security keys)
•
Инструмент управления доступом к интерфейсу на уровне групп
пользователей
82
Section Heading
Конфигурационные ключи
•
•
•
Конфигурационный ключ
отвечает за одну или более
функциональных областей
приложения
Отключив
конфигурационный ключ,
Вы тем самым отключаете
соответствующую
функциональность системы
Конфигурационные ключи
образуют иерархическую
древовидную структуру
Меню
Пункты меню
Таблицы
Расширенные
типы данных
Элементы
форм
Конфигурационный ключ
Поля таблиц
83
Section Heading
Ключи контроля доступа
•
•
•
Наследуют Конфигурационные ключи
Управляют более детализированным конфигурированием
системы
Ключи управления доступом связаны с группами
пользователей Axapta
84
Section Heading
Управление доступом
Иерархия
Ключи управления доступом
Пользователь Axapta
Домены Axapta
Права групп пользователей
Группа пользователей
Группа пользователей
Доступ на уровне записи
Проверка пароля
Домен
Регистрация в базе данных
Доступ к таблицам
Ключ упр. доступом Ключ упр. доступом Ключ упр. доступом
Конфигурационный ключ
Лицензионный код
Конфигурационный ключ
Лицензионный код
85
Section Heading
Где мы сейчас
•
•
•
•
•
•
•
•
•
•
•
Среда разработки MorphX
Язык X++
Макросы
Таблицы
Формы
Запросы
Классы
Меню и пункты меню
Отчеты
Конфигурационные ключи
Стандарты разработки
86
Section Heading
Стандарты именования
Для именования объектов в Аксапта следует
придерживаться следующих правил:
•
•
•
Мнемонические (само объясняющие)
наименования на английском языке
Правила разделения Российской и
международной разработки - любые российские
расширения и дополнения к стандартной
функциональности начинаются на префикс R
(постфикс RU – устаревший вариант)
Правила наименований клиентских версий –
клиентский код префикса или постфикса
87
Section Heading
Правила заглавных и строчных букв и цифр
•
•
•
•
•
Наименование должно начинаться с буквы, далее
можно использовать цифры
Все слова в названии выделяются заглавной буквой
Со строчной буквы начинаются наименования
методов, функций, ключевых слов и переменных
С заглавной буквы начинаются наименования таблиц,
полей, индексов, отношений, классов, форм,
источников данных, расширенных и перечислимых
типов, макросов, запросов и отчетов
С символа «_» начинаются параметры методов
88
Section Heading
Оформление кода
•
•
Использование лаконичных комментариев
Использование отступов и пробелов
Величина отступа – 4 пробела или 1 Tab
Пробелы используются
• При разделении всех ключевых слов
• После запятой при перечислении
функций и методов
89
Section Heading
Вопросы
... и ответы
90
Download