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

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

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

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

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

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

Компиляция модулей и режимы исполнения встроенного языка

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

Исполнение модулей также может происходить в нескольких режимах. Модули, скомпилированные на стороне сервера, всегда исполняются в одном и том же режиме — режиме сервера. В отличие от них модули, скомпилированные на стороне клиента, могут исполняться в одном из двух режимов: в режиме клиента или в режиме внешнего соединения.

Каждый из режимов исполнения имеет свои особенности. Не все модули могут быть скомпилированы в любых контекстах и не все скомпилированные модули могут быть исполнены в любых режимах.

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

Особенности исполнения встроенного языка на сервере и механизм передачи исполнения с клиента на сервер подробно рассматриваются дальше.