Общий модуль в 1С 8.3

Зачем нужны общие модули

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

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

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

Вызов общего модуля

Вызов общего модуля выполняется через имя общего модуля. После имени общего модуля нужно указать точку, а потом имя метода. Метод должен быть экспортным, иначе при вызове возникнет ошибка «Метод объекта не обнаружен».

Для примера добавим в конфигурацию новый общий модуль. Общие модули расположены в узле Общие — Общие модули:

В свойствах общего модуля установим флаг Клиент:

В самом модуле добавим следующий код:

В модуле обработки вызовем оба метода общего модуля:

Вызов метода ТестОдин отработает корректно, а при вызове метода ТестДва возникнет ошибка «Метод объекта не обнаружен», потому что у процедуры нет ключевого слова Экспорт.

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

Клиентский общий модуль

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

Серверный общий модуль

Если установлен только флаг Сервер, то к методам такого модуля можно будет обращаться только на сервер.

Вызов сервера

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

Клиент-серверный общий модуль

У такого общего модуля в свойствах нужно установить и флаг Клиент и флаг Сервер.

Чтобы при компиляции такого общего модуля не было ошибок нужно с помощью инструкций препроцессора разделить процедуры на клиентские и серверные:

Вызывать серверные методы общего модуля можно только на сервере:

Глобальный общий модуль

Если в свойствах модуля поставить флаг Глобальный, то для вызова методов общего модуля не нужно указывать имя общего модуля.

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

Привилегированный общий модуль

Общий модуль с таким флагом всегда выполняется без проверки прав доступа. Такой общий модуль может быть только серверным.

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

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

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

Есть два варианта повторного использования возвращаемых значений:

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

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

  • Если в рабочем процессе сервера 1С не хватает оперативной памяти
  • Рабочий процесс был перезапущен
  • Клиент был переключен на другой рабочий процесс
  • Прошло 20 минут после сохранения или 6 минут после последнего использования
  • Если вызвать метод ОбновитьПовторноИспользуемыеЗначения

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

Для сохранения в кеше и повторного использования можно использовать параметры следующих типов:

  • Дата
  • Булево
  • Строка
  • Число
  • Неопределено
  • Null
  • Ссылка
  • Структура, только со значениями примитивных типов или ссылок.

Подписывайтесь на группу ВКонтакте , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Понравилась статья? Поделиться с друзьями:
Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok