Объект 1С:Предприятие "Общие модули"

Палитра свойств общего модуля 1С

Понятие объекта "Общие модули"

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

Примеры общего модуля 1С:

  • расчет количества разницы рабочих дней;
  • пересчет курсов валют;
  • пересчет количества/цены/суммы в табличной части;
  • обработка проведения по какому-то регистру,  и др.

Особенности объекта "Общий модуль":

  1. содержат только раздел процедур и функций;
  2. не могут содержать объявления переменных;
  3. нет раздела основной программы
  4. экспортируемые переменные, процедуры и функции модуля приложения не доступны в общих модулях;
  5. экспортируемые процедуры и функции общих модулей доступны:
    • в модуле приложения,
    • других общих модулях,
    • остальных программных модулях.
  6. в конфигурации общих модулей может быть несколько (в отличие от модуля приложения, единственного для конфигурации).

Палитра свойств объекта "Общие модули"

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

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

"Клиент (управляемое приложение)" — если флаг установлен, методы общего модуля будут доступны для тонкого клиента, веб-клиента, а также для толстого клиента в режиме управляемого приложения.

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

"Сервер" — если флаг установлен, процедуры и функции данного общего модуля могут быть выполнены на сервере (в клиент-серверном варианте).

"Внешнее соединение" — если флаг установлен, программные коды данного общего модуля могут быть выполнены при подключении внешним источником (например, COM). 

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

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

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

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

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

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

Опция может принимать следующие значения:

  1. Не использовать — отключение;
  2. На время вызова — на время выполнения определенной процедуры;
  3. На время сеанса — пока пользователь не закрыл сеанс (программу).

Особенности свойства "Повторное использование возвращаемых значений"

Особенности сохранения результатов вызова:

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

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

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

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

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

[свернуть]

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

Рекомендации по выставлению флагов общего модуля 1С:

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

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.