Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
V8_16_Модули_Компилиодулей.doc
Скачиваний:
14
Добавлен:
14.07.2019
Размер:
878.08 Кб
Скачать

19

Модули конфигурации

Для размещения текста программы на встроенном языке предназначены модули прикладного решения (например, модуль приложения, общие модули, модули объектов, модули форм и т. д.). Эти модули располагаются в различных местах конфигурации и имеют различное назначение.

Большинство модулей “привязано” к определенным объектам конфигурации или к самому прикладному решению. Такие модули вызываются в определенные моменты работы прикладного решения (например, модуль приложения, который запускается при запуске системы в режиме 1С:Предприятие, или модуль объекта справочника Номенклатура, который запускается при создании объекта (элемента) справочника).

Таким образом, если модуль содержит некоторый код, то этот код будет выполнен и работа прикладного решения продолжена. В таких модулях могут располагаться процедуры обработки событий, определенных для различных объектов прикладного решения. Эти процедуры также будут выполняться при наступлении соответствующего события.

Наряду с модулями, вызываемыми в процессе работы прикладного решения, существуют общие модули, которые сами по себе не вызываются в процессе работы прикладного решения. Они служат лишь для размещения в них текстов функций и процедур, которые могут вызываться из других модулей прикладного решения.

Таким образом, код, располагающийся в общих модулях, будет исполнен только тогда, когда к нему будет выполнено явное обращение из другого модуля конфигурации или из командного интерфейса.

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

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

Общий модуль

В конфигурации может быть определено произвольное количество общих модулей, в том числе и ни одного. Контекст общего модуля образуется глобальным контекстом и локальным контекстом самого общего модуля, то есть процедурами и функциями, определенными внутри общего модуля (рис. 3.3).

 

Рис. 3.3. Контекст общего модуля

Поскольку общий модуль не исполняется системой непосредственно, в нем отсутствует раздел описания переменных и раздел основной программы. Общий модуль может содержать только определения процедур и функций.

Если процедуры или функции общего модуля определены как экспортируемые, то они становятся частью глобального контекста и будут доступны другим модулям прикладного решения (за некоторыми исключениями, о которых будет сказано далее).

Поскольку общий модуль не “привязан” к какому-либо объекту конфигурации, а относится ко всему прикладному решению, имена экспортируемых переменных, процедур и функций должны быть различными в разных общих модулях. В противном случае будет выдана синтаксическая ошибка, так как глобальный контекст будет содержать повторяющиеся имена.

Замечание 1. В V8.1 введена возможность разделения общих модулей на глобальные и неглобальные. Глобальные общие модули - аналог общих модулей "1С:Предприятия 8.0".

  • Неглобальные общие модули допускают дублирование имен экспортируемых процедур/функций в разных неглобальных общих модулях.

  • Реализована возможность размещения обработчиков команд интерфейсов в неглобальных общих модулях.

  • Для неглобальных общих модулей с установленным свойством "Клиент" реализована доступность экспортируемых переменных, процедур и функций модуля приложения.

  • Для неглобальных общих модулей с установленным свойством "Внешнее соединение" реализована доступность экспортируемых переменных, процедур и функций модуля внешнего соединения.

Замечание 2. Обращение к процедурам и функциям общего модуля осуществляется через имя модуля: имяМодуля.ИмяПроцедуры

Если в свойстве модуля указать, что он глобальный, то при обращении к его процедурам имя модуля указывать не надо