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

Компиляция общих модулей

Экземпляры общих модулей компилируются в соответствии со значениями свойств Клиент, Сервер и Внешнее соединение этих модулей. Если для общего модуля установлено только свойство Клиент, то экземпляр этого модуля будет скомпилирован только на стороне клиента. Если установлено только свойство Сервер — то только на стороне сервера (рис. 3.12).

 

Рис. 3.12. Компиляция общего модуля для исполнения на сервере или на клиенте

Если для общего модуля установлены свойства Клиент и Сервер одновременно, то экземпляры этого общего модуля будут скомпилированы как на стороне клиента, так и на стороне сервера (рис. 3.13).

 

Рис. 3.13. Компиляция общего модуля для исполнения на сервере и клиенте

 

Если для общего модуля установлено свойство Внешнее соединение, то экземпляр этого модуля будет скомпилирован на стороне клиента только в случае запуска 1С:Предприятия в сеансе внешнего соединения (при обращении к нему как к COM-серверу) (рис. 3.14).

Рис. 3.14. Компиляция общего модуля для исполнения в сеансе внешнего соединения

Если для общего модуля установлены свойства Сервер и Внешнее соединение, то на стороне сервера всегда будет компилироваться экземпляр этого модуля, а на стороне клиента — только в сеансе внешнего соединения (рис. 3.15).

 

Рис. 3.15. Компиляция общего модуля для исполнения на сервере и в сеансе внешнего соединения

Если для общего модуля установлены свойства Клиент и Внешнее соединение, то экземпляр этого модуля будет всегда компилироваться на стороне клиента (рис. 3.16).

 

Рис. 3.16. Компиляция общего модуля для исполнения на стороне клиента и в сеансе внешнего соединения

Если для общего модуля установлены свойства Сервер, Клиент и Внешнее соединение, то экземпляр этого модуля всегда будет компилироваться как на стороне сервера, так и на стороне клиента (рис. 3.17).

 

Рис. 3.17. Компиляция модуля для исполнения на сервере, клиенте и в сеансе внешнего соединения

Компиляция модуля приложения и модуля внешнего соединения

Модуль приложения и модуль внешнего соединения всегда компилируются только на стороне клиента. Модуль приложения компилируется в случае, если выполняется запуск конфигурации в режиме 1С:Предприятие или приложение запускается в качестве Automation-сервера. Модуль внешнего соединения компилируется в случае, если приложение запускается в качестве COM-сервера (рис. 3.18).

 

Рис. 3.18. Компиляция модуля приложения и модуля внешнего соединения

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

Компиляция модуля объекта

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

Если обращение к объекту выполняется, например, в модуле приложения, то экземпляр объекта будет создан на стороне клиента и, соответственно, экземпляр модуля объекта будет также скомпилирован на стороне клиента (рис. 3.19).

Если же обращение к объекту выполняется в процедуре общего модуля, для которого установлено свойство Сервер, то объект будет создан на сервере и там же будет скомпилирован экземпляр модуля этого объекта (рис. 3.20).

 

Рис. 3.19. Компиляция модуля объекта на стороне клиента

 

Рис. 3.20. Компиляция модуля объекта на стороне сервера

Чтобы убедиться в том, что объект действительно создается на сервере или клиенте, можно добавить в модуль объекта справочника Номенклатура следующие строки (листинг 3.4).

Листинг 3.4. Использование инструкций условной компиляции

#Если Сервер Тогда

    Сообщить("Объект создан на сервере");

#ИначеЕсли Клиент Тогда

    Сообщить("Объект создан на клиенте");

#КонецЕсли

В этом примере использованы инструкции препроцессору

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

Компиляция модуля формы

Модуль формы всегда компилируется только на стороне клиента и только в режиме 1С:Предприятие, поскольку объект форма не доступен на сервере и в режиме внешнего соединения.

Использование инструкций препроцессору

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

Например, если в модуле объекта разместить предыдущий текст (листинг 3.4), то в том случае, когда экземпляр модуля объекта компилируется на клиенте, он будет содержать текст:

  Сообщить("Объект создан на клиенте");

Если же этот объект будет создаваться на стороне сервера, тогда модуль объекта будет содержать следующий текст:

  Сообщить("Объект создан на сервере");

Таким образом, например, можно получить информацию о том, на какой стороне (сервера или клиента) выполняется данный участок кода.

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