Проект gpl-2C |
Документация\Уровень 0\Описание встроенного языка |
Пред. | След. | |
1.1. Введение |
1.2. Программные модули |
1.3 Конструкции языка |
1.2. Программные модули
1.2.1. Что такое модуль
Программный модуль это специальный текстовый файл, в котором на языке 2С написан список инструкций по управлению логикой работы того объекта или контекста, для которого он предназначен. Обычно каждый модуль оформляется в виде набора процедур и функций. Хотя каждый модуль не является программой, но имеет определенные точки входа для инициирования начала выполнения. Ими являются предопределенные процедуры и функции, имена которых зависят от контекста исполнения (вида модуля). В одном случае это могут быть процедуры, взаимодействующие с интерфейсом формы (например, реакция на нажатие кнопки), в другом случае это может быть запуск или завершение работы системы (например, процедура любого общего модуля ПриНачалеРаботыСистемы).
1.2.2. Контекст и область видимости модулейМодули могут быть двух типов: локальными и общими. В первом случае модуль виден только внутри контекста исполнения (например, внутри обработки, внутри формы документа и пр..). Во втором случае модуль виден для определенной группы модулей, в зависимости от конкретной ситуации.
1.2.3. Иерархия модулей
Ниже приведена схема подчинения (видимости) модулей друг другом.
(Общие модули конфигурации)
-Модуль: «Инициализация системы»
-Пользовательский модуль 1
...
-Пользовательский модуль N
-Модуль локального контекста
Таким образом, каждый нижестоящий модуль видит все процедуры, функции и переменные вышестоящего модуля (далее по тексту - родительский модуль), объявленные с признаком «экспорт».
В объектах область видимости по структуре такая же, но ограничена самим объектом или родительскими объектами. Общие модули конфигурации модулям объектов недоступны. Данный факт сделан, для того чтобы создавались максимально инкапсулированные объекты, с возможностью легкого переноса из одной конфигурации в другую.
Схема подчинения (видимости) модулей внутри одного объекта:
(Общие модули объекта)
-Общий модуль 1
...
-Общий модуль N
-Модуль формы | Модуль среды исполнения | Модуль среды конфигурирования
Для случая наследуемых объектов схема примет вид:
(Общие модули родительского объекта)
-Общий модуль 1 родительского объекта
...
-Общий модуль N родительского объекта
-Модуль среды исполнения родительского объекта
(Общие модули объекта)
-Общий модуль 1
...
-Общий модуль N
-Модуль формы | Модуль среды исполнения | Модуль среды конфигурирования
Таким образом, в цепочку видимых модулей включается модуль среды исполнения родительского объекта и его общих модулей. На приведенной выше схеме была показана иерархия модулей для двух объектов, один из которых наследуется от другого. Если же родительский объект, в свою очередь, является наследником другого объекта, то в схему добавятся новые модули. Таким образом, дочерний - самый нижний в иерархии подчинения модуль аккумулирует в себя экспортные процедуры и функции всех вышестоящих объектов.
Для локальных модулей, которые находятся в группе «Метаданные» дерева конфигурации, родительские модули определяются путем соединения общих модулей конфигурации и общих модулей объектов (а также модуля среды исполнения).
Схема подчинения модуля группы «Метаданные»:
-Общие модули конфигурации
-Общие модули объектов
-Модули сред исполнения объектов
-Локальный контекст
К примеру, такими локальными модулями для каждого вида документа являются: модуль формы диалога, модуль формы списка, модуль проведения.
1.2.4. Формат программного модуля
Структура модуля
-Объявление переменных
-Объявление процедур и функций
-Раздел непосредственного кода исполнения
Таким образом, программный модуль состоит из набора объявлений переменных, процедур и функций. Причем объявление переменных может чередоваться с объявлениями процедур и функций, но в этом случае переменные становятся видимыми лишь только для тех процедур и функций, которые объявлены ниже.
Раздел непосредственного исполнения начинается сразу за последним объявлением процедуры или функции, он представляет собой набор операторов языка 2С и выполняется только для форм (перед предопределенной процедурой ПриОткрытии) и для общих модулей (перед предопределенной процедурой ПриНачалеРаботыСистемы) - для остальных типов модулей данный раздел игнорируется.
1.2.5. Зарезервированные ключевые слова
Ниже приведена таблица ключевых слов, которые зарезервированы в языке 2С, для обозначения программных конструкций и, которые не могут использоваться для задания имен переменных, меток или имен процедур и функций (регистр букв не имеет значения):
Если |
If |
He |
Not |
Дата |
Date |
Тогда |
Then |
Знач |
Val |
По |
To |
ИначеЕсли |
Elsif |
СтрДлина |
StrLen |
Пока |
While |
Иначе |
Else |
БазовыйОбъект |
Возврат |
Return |
|
КонецЕсли |
Endlf |
Продолжить |
Continue |
Контекст |
Context |
Цикл |
Do |
Прервать |
Break |
Перем |
Var |
Для |
For |
Функция |
Function |
Перейти |
Goto |
КонецПроцедуры |
EndProcedure |
Число |
Number |
И |
And |
КонецФункции |
EndFunction |
Строка |
String |
Или |
Or |
Виртуально |
virtual |
КонецЦикла |
EndDo |
Процедура |
Procedure |
ВызватьИсключение |
raise |
Попытка |
try |
Исключение |
except |
КонецПопытки |
endtry |
Примечание:
В таблице приведены русские имена зарезервированных слов и их англоязычные синонимы. С точки зрения языка допускается одновременное использование обеих языков, пример:
Для А=1
To 100 DoEndDo
Но с точки зрения читаемости кода, такое сочетание не рекомендуется.
1.2.6. Имена переменных, меток, процедур и функцийИмена переменных (а ровно как и имена меток, процедур и функций) могут содержать в себе любую последовательность букв, цифр символа «_» (подчеркивание), должны начинаться с буквы или подчеркивания и не совпадать ни с одним из приведенным выше зарезервированным ключевым словом. Распознавание таких имен производится без учета регистра букв.
1.2.7. Специальные символы, используемые в программном модуле
// |
Такими двумя знаками «косая черта» обозначается начало комментария. Комментарием считается весь текст от знака "//" до конца текущей строки |
| |
Вертикальная черта в начале строки может использоваться только в строковых константах и означает, что данная строка является продолжением предыдущей строки (данный символ разрешается опускать) |
~ |
Знаком тильда может начинаться имя метки для оператора безусловного перехода (данный символ разрешается опускать) |
: |
Двоеточием заканчивается имя метки |
; |
Точка с запятой является символом - разделителем операторов (в большинстве случаев данный символ необязателен) |
( ) |
В круглые скобки заключается список параметров процедур и функций, а также методов объектов |
[ ] |
В квадратные скобки заключается индекс элемента массива или размерность для начальной инициализации численно-индексных массивов |
, |
Запятая разделяет параметры в списке параметров процедур и функций, а также методов объектов |
" " |
В двойные кавычки заключаются строковые константы |
' ' |
В одинарные кавычки заключаются константы даты |
. |
Точка используется как десятичная точка в числовых константах и как разделитель, при доступе к атрибутам и методам объектов |
+ |
Символ «плюс» обозначает операцию сложения (применяется для чисел, строк, дат) |
- |
Символ «минус» обозначает операцию вычитания (применяется только для чисел и дат) |
* |
Символ «звездочка» обозначает операцию умножения (применяется только для чисел) |
/ |
Символ «косая черта» обозначает операцию деления (применяется только для чисел) |
% |
Символ «процент» обозначают операцию получения остатка от деления (применяется только для чисел) |
> |
Правая угловая скобка обозначает логическую операцию «больше» (применяется для чисел, строк, дат) |
>= |
Логическая операция «больше или равно» |
< |
Логическая операция «меньше» |
<= |
Логическая операция «меньше или равно» |
= |
Логическая операция «равно» или операция присваивания |
<> |
Логическая операция «не равно» |
1.2.8. Процедуры и функции программного модуля
...