Проект 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 Do

EndDo

Но с точки зрения читаемости кода, такое сочетание не рекомендуется.

1.2.6. Имена переменных, меток, процедур и функций

Имена переменных (а ровно как и имена меток, процедур и функций) могут содержать в себе любую последовательность букв, цифр символа «_» (подчеркивание), должны начинаться с буквы или подчеркивания и не совпадать ни с одним из приведенным выше зарезервированным ключевым словом. Распознавание таких имен производится без учета регистра букв.

1.2.7. Специальные символы, используемые в программном модуле

//

Такими двумя знаками «косая черта» обозначается начало комментария. Коммен­тарием считается весь текст от знака "//" до конца текущей строки

|

Вертикальная черта в начале строки может использоваться только в стро­ковых константах и означает, что данная строка является про­должением предыдущей строки (данный символ разрешается опускать)

~

Знаком тильда может начинаться имя метки для оператора безусловного перехода (данный символ разрешается опускать)

:

Двоеточием заканчивается имя метки

;

Точка с запятой является символом - разделителем операторов (в большинстве случаев данный символ необязателен)

( )

В круглые скобки заключается список параметров про­цедур и функций, а также методов объектов

[ ]

В квадратные скобки заключается индекс элемента массива или размерность для начальной инициализации численно-индексных массивов

,

Запятая разделяет параметры в списке параметров про­цедур и функций, а также методов объектов

" "

В двойные кавычки заключаются строковые константы

' '

В одинарные кавычки заключаются константы даты

.

Точка используется как десятичная точка в числовых константах и как разделитель, при доступе к атрибутам и методам объектов

+

Символ «плюс» обозначает операцию сложения (применяется для чисел, строк, дат)

-

Символ «минус» обозначает операцию вычитания (применяется только для чисел и дат)

*

Символ «звездочка» обозначает операцию умножения (применяется только для чисел)

/

Символ «косая черта» обозначает операцию деления (применяется только для чисел)

%

Символ «процент» обозначают операцию получения остатка от деления (применяется только для чисел)

>

Правая угловая скобка обозначает логическую операцию «боль­ше» (применяется для чисел, строк, дат)

>=

Логическая операция «больше или равно»

<

Логическая операция «мень­ше»

<=

Логическая операция «меньше или равно»

=

Логическая операция «равно» или операция присваивания

<>

Логическая операция «не равно»

1.2.8. Процедуры и функции программного модуля

...