Виды программных модулей

Модуль управляемого приложения
Модуль сеанса
Модуль внешнего соединения
Модуль обычного приложения
Общие модули
Модули общих объектов
Модули прикладных объектов
Модули менеджеров прикладных объектов
Модули команд (модули общих команд)
Модули управляемых форм
Модули форм

В системе 1С:Предприятие существуют несколько видов программных модулей. Они различаются по месту размещения и доступному контексту.

Модуль управляемого приложения

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

Модуль сеанса

Модулем сеанса называется модуль, который автоматически выполняется при старте системы 1С:Предприятие 8 в момент загрузки конфигурации.

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

Важно! Модуль сеанса может содержать только определения процедур и функций.

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

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

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

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

Объекты 1С:Предприятия, доступные извне через COM-соединение:

  • Экспортируемые переменные и процедуры/функции модуля внешнего соединения
  • Экспортируемые процедуры/функции общих модулей
  • Включение и исключение модулей целиком с помощью установки свойств общих модулей
  • Включение и исключение фрагментов общих модулей с помощью препроцессора
  • Глобальный контекст 1С:Предприятия 8
  • За исключением объектов, жестко связанных с клиентским приложением (ТекстовыйДокумент, ТабличныйДокумент, ...)

Модуль присутствует только в сессии внешнего соединения.

В данном режиме характерно полное отсутствие пользовательского интерфейса.

Модуль обычного приложения

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

Общие модули

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

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

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

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

Важно! Свойство Клиент (обычное приложение) показывается, если в настройках конфигурации режима запуска установлен режим "Управляемое приложение и обычное приложение".

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

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

Свойство Вызов сервера разрешает вызов сервера. Свойство доступно, если установлено свойство Сервер. Если не установлено, то процедуры и функции данного модуля доступны только на сервере. Если установлено, то процедуры и функции данного модуля доступны на клиенте.

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

Повторное использование возвращаемых значений. Свойство доступно, если общий модуль не является Глобальным. Это свойство может принимать следующие значения:

  • Не использовать – повторное использование возвращаемых значений для функций этого общего модуля не используется;
  • На время вызова и На время сеанса – для общего  модуля используется метод определения повторного использования данных. Суть этого метода заключается в том, что в ходе выполнения кода система запоминает параметры и результат работы функций после первого вызова функции. При повторном вызове функции с такими же параметрами, происходит возврат запомненного значения (из первого вызова) без выполнения самой функции. Если функция во время своего выполнения меняет значения параметров, то повторный вызов функции не будет это делать.

Можно выделить следующие особенности сохранения результатов вызова:

  • если функция выполняется на сервере и вызывается из серверного кода, то значения параметров и результат вызова запоминаются  для текущего сеанса на стороне сервера;
  • если функция выполняется на толстом или тонком клиенте, то значения параметров и результатов вызова запоминается на стороне клиента;
  • если функция выполняется на стороне сервера, а вызывается из клиентского кода, то значения параметров вызова запоминаются и на стороне клиента и на стороне сервера.

Сохраненные значения удаляются:

  • если свойство установлено в значение На время вызова:
    • на стороне сервера – при возврате управления с сервера;
    • на стороне клиента – при завершении работы процедуры или функции встроенного языка  верхнего уровня (вызванной системой из интерфейса, а не из другой процедуры или функции встроенного языка).
  • если свойство общего модуля установлено в значение На время сеанса:
    • на стороне сервера – при окончании сеанса;
    • на стороне клиента – при закрытии клиентского приложения.

Сохраненные значения могут быть удалены:

  • после долгого неиспользования (более 5 минут);
  • при нехватке оперативной памяти в рабочем процессе сервера;
  • при перезапуске рабочего процесса;
  • при переключении клиента на другой рабочий процесс.

После удаления значений, вызов экспортной функции выполняется как при первом вызове.

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

Если свойство Глобальный установлено в значение Ложь, то в глобальном контексте создается свойство с именем, соответствующим имени общего модуля в метаданных. Данное свойство доступно ТОЛЬКО для чтения. Значением данного свойства является объект ОбщийМодуль. Через данный объект доступны экспортируемые методы данного общего модуля. Таким образом, обращение к методам неглобальных общих модулей выглядит как XXXXX.YYYYY, где XXXXX – это имя свойства общего модуля, а YYYYY – имя экспортируемого метода общего модуля.

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

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

Модули с установленным свойством Клиент (обычное приложение), проверяются для режимов запуска:

  • Толстый клиент (обычное приложение);
  • Толстый клиент (обычное приложение) вариант клиент-сервер.

Модули с установленным свойством Клиент (управляемое приложение), проверяются для режимов запуска:

  • Толстый клиент (управляемое приложение);
  • Толстый клиент (управляемое приложение) вариант клиент-сервер;
  • Тонкий клиент;
  • Веб-клиент.
Модули общих объектов

Некоторые общие объекты имеют собственные модули. К таким объектам относятся:

  • Команды;
  • Web-сервисы.

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

Модули прикладных объектов

Набор прикладных объектов имеет собственные модули. К таким объектам относятся:

  • менеджеры значения константы;
  • справочники;
  • документы;
  • отчеты (внешние отчеты);
  • обработки (внешние обработки);
  • планы видов характеристик;
  • планы счетов;
  • планы видов расчетов;
  • бизнес-процессы;
  • задачи;
  • регистры.

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

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

Модули менеджеров прикладных объектов

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

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

Модуль менеджера не может иметь переменных и тела модуля.

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

Пример:
Модуль менеджера:

Функция ПолучитьСписокДебиторов() Экспорт

КонецФункции

Вызов из прикладного кода:

Дебиторы = Справочники.Контрагент. ПолучитьСписокДебиторов();
Модули команд (модули общих команд)

Для нестандартных команд требуется написать процедуру ее выполнения. Для этого служит модуль команды, в котором можно написать предопределенную процедуру ОбработатьКоманду(). Данная процедура должна предваряться директивой компиляции &НаКлиенте, так как выполнение команды происходит в клиентском приложении.

Модули управляемых форм

Модуль состоит из набора процедур и функций. Переменные модуля и тело модуля не допускаются.

Модули форм

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

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

1C:Enterprise Developer's Community