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

Модуль внешнего соединения

В конфигурации всегда существует единственный модуль внешнего соединения. Контекст модуля внешнего соединения (рис. 3.6) образуется:

  глобальным контекстом, в том числе экспортируемыми функциями и процедурами общих модулей (если для этих модулей установлено хотя бы одно из свойств Внешнее соединение или Сервер);

  локальным контекстом самого модуля приложения.

 

Рис. 3.6. Контекст модуля внешнего соединения

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

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

Помимо описания переменных и основной программы, модуль внешнего соединения может содержать описание двух процедур-обработчиков событий, связанных с началом и завершением работы: ПриНачалеРаботыСистемы и ПриЗавершенииРаботыСистемы. Последовательность их вызова представлена на рис. 3.7.

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

 

Рис. 3.7. Последовательность вызова событий модуля внешнего соединения

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

Модуль объекта

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

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

Например, пусть в модуле справочника ТиповыеАнкеты определена экспортная процедура (листинг 3.1).

Листинг 3.1. Экспортная процедура в модуле справочника

Процедура Печать() Экспорт

    // Алгоритм вывода на экран печатной формы анкеты

    // ...

КонецПроцедуры //

Тогда возможен следующий вызов этой процедуры, например, из модуля внешней обработки (листинг 3.2).

Листинг 3.2. Пример вызова экспортной процедуры объекта справочника

Анкета = Справочники.ТиповыеАнкеты.      Найтипокоду("00001").Получитьобъект();

Анкета.Печать();

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

 

Рис. 3.9. Последовательность вызова событий модуля объекта

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

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

Модуль формы

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

Листинг 3.3. Пример получения формы

Форма = Справочники.Номенклатура.ПолучитьФормуСписка();

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

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

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

 

Рис. 3.11. Последовательность вызова событий модуля формы

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

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

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

Событие ПриЗакрытии возникает при закрытии формы после закрытия окна формы. В обработчике этого события можно описывать алгоритмы, которые должны быть выполнены только в случае, когда форма будет наверняка закрыта.