6.1 Какие виды программных модулей существуют в "1С:Предприятие 8"?
❓ 6.1 Какие виды программных модулей существуют в “1С:Предприятие 8”?
📚 Документация
Заголовок раздела «📚 Документация»-
ИТС: Платформа — Вид программных модулей
https://its.1c.ru/db/v854doc#bookmark:dev:TI000000124 -
ИТС: Стандарты разработки — Использование модуля объекта, модуля менеджера объекта и общих модулей
https://its.1c.ru/db/v8std#content:486:hdoc
🧠 Краткая теория
Заголовок раздела «🧠 Краткая теория»В «1С:Предприятии» программный код размещается в модулях.
Каждый модуль имеет свой контекст выполнения:
- к какому объекту он относится;
- где выполняется код — на клиенте или на сервере;
- когда этот код вызывается платформой;
- какие данные и методы доступны внутри модуля.
При разработке важно правильно выбрать место, где этот код должен находиться.
Основные виды модулей
Заголовок раздела «Основные виды модулей»В 1С используются разные виды модулей:
- модуль управляемого приложения;
- модуль обычного приложения;
- модуль внешнего соединения;
- модуль сеанса;
- общие модули;
- модули объектов;
- модули менеджеров объектов;
- модули форм;
- модули команд;
- модули наборов записей.
Разберем их с точки зрения назначения.
Модули, связанные со стартом и завершением работы
Заголовок раздела «Модули, связанные со стартом и завершением работы»Модуль управляемого приложения
Заголовок раздела «Модуль управляемого приложения»Модуль управляемого приложения используется для обработки действий, связанных с сеансом работы пользователя.
В первую очередь это события:
- начала работы системы;
- завершения работы системы.
В этом модуле рекомендуется размещать только обработчики соответствующих событий.
Например, здесь может выполняться логика, которая нужна при запуске управляемого приложения.
Важно: модуль управляемого приложения недоступен для процедур, которые выполняются на сервере.
Модуль внешнего соединения
Заголовок раздела «Модуль внешнего соединения»Модуль внешнего соединения используется при работе системы в режиме внешнего соединения (COM-соединения).
В этом модуле размещаются обработчики событий:
- начала работы внешнего соединения;
- завершения работы внешнего соединения.
По смыслу он похож на модуль приложения, но используется не для обычного пользовательского запуска, а для внешнего подключения к информационной базе через COM-соединение.
Модуль сеанса
Заголовок раздела «Модуль сеанса»Модуль сеанса автоматически выполняется при старте системы «1С:Предприятие» в момент загрузки конфигурации.
Он предназначен для:
- инициализации параметров сеанса;
- выполнения действий, связанных с началом работы сеанса.
Особенность модуля сеанса в том, что он всегда выполняется на сервере в привилегированном режиме.
Установка параметров сеанса выполняется в обработчике события УстановкаПараметровСеанса.
Модули, связанные с объектами конфигурации
Заголовок раздела «Модули, связанные с объектами конфигурации»Модуль объекта
Заголовок раздела «Модуль объекта»Модуль объекта используется для описания логики конкретного экземпляра объекта базы данных.
Например:
- конкретного элемента справочника;
- конкретного документа;
- конкретного бизнес-процесса;
- конкретной задачи.
В модуле объекта обычно размещают код, который связан с жизненным циклом самого объекта:
- заполнение объекта;
- проверка перед записью;
- запись;
- проведение;
- отмена проведения;
- обработка удаления.
Например, если нужно проверить данные конкретного документа перед записью, такая логика обычно относится к модулю объекта.
Модуль менеджера
Заголовок раздела «Модуль менеджера»Модуль менеджера относится не к конкретному экземпляру объекта базы данных, а к объекту конфигурации в целом.
Например, не к конкретному элементу справочника Номенклатура, а к справочнику Номенклатура как объекту конфигурации.
Через менеджер можно:
- создавать объекты;
- получать формы;
- работать с макетами;
- описывать методы, которые относятся к объекту конфигурации в целом.
Например, если нужна процедура поиска, подбора или создания элемента справочника по определенным правилам, ее часто размещают в модуле менеджера.
Главное отличие:
- модуль объекта — логика конкретного объекта базы данных;
- модуль менеджера — логика объекта конфигурации в целом.
Модули, связанные с интерфейсом
Заголовок раздела «Модули, связанные с интерфейсом»Модуль формы
Заголовок раздела «Модуль формы»Модуль формы содержит код, который связан с работой конкретной формы.
В нем обычно размещают:
- обработчики команд формы;
- обработчики событий элементов формы;
- клиентскую логику интерфейса;
- вызовы серверных процедур формы.
Например, в модуле формы может быть код, который:
- реагирует на нажатие кнопки;
- изменяет доступность реквизита формы;
- открывает форму выбора;
- вызывает серверную процедуру для заполнения данных.
Важно понимать: модуль формы нужен для логики формы, а не для всей бизнес-логики объекта.
Если проверка должна выполняться всегда при записи документа, ее не стоит оставлять только в форме.
Пользователь может записать объект не только через эту форму, но и другим способом.
Модуль команды
Заголовок раздела «Модуль команды»Модуль команды предназначен для описания действия, которое должна выполнить система при вызове команды.
Модуль команды может содержать только процедуры и функции.
В нем не может быть:
- переменных модуля;
- тела модуля.
То есть модуль команды используется как место, где описывается обработка конкретной команды.
Общие алгоритмы
Заголовок раздела «Общие алгоритмы»Общие модули
Заголовок раздела «Общие модули»Общие модули предназначены для размещения общих алгоритмов конфигурации.
Их используют, когда один и тот же код должен быть доступен из разных мест:
- из модулей форм;
- из модулей объектов;
- из модулей менеджеров;
- из других общих модулей.
В общих модулях отсутствуют:
- раздел определения переменных;
- раздел основной программы.
Они содержат только процедуры и функции.
Общие модули удобно использовать для кода, который не относится напрямую к конкретной форме или конкретному объекту базы данных.
Например:
- общие проверки;
- сервисные функции;
- алгоритмы заполнения;
- интеграционная логика;
- работа с внешними сервисами;
- переиспользуемая бизнес-логика.
При этом важно учитывать настройки общего модуля: где он доступен и где выполняется — на клиенте или на сервере.
Модули регистров
Заголовок раздела «Модули регистров»Модуль набора записей
Заголовок раздела «Модуль набора записей»Модуль набора записей используется у регистров.
Такой модуль позволяет описывать логику, которая выполняется при работе с набором записей, например при записи движений регистра.
По смыслу его можно сравнить с модулем объекта, но для регистров.
В регистрах основной объект работы — это не элемент справочника или документ, а набор записей.
Как выбрать место для кода
Заголовок раздела «Как выбрать место для кода»Чтобы правильно выбрать модуль, нужно сначала понять, к чему относится логика.
Если логика относится к конкретному объекту базы данных
Заголовок раздела «Если логика относится к конкретному объекту базы данных»Например:
- конкретному документу;
- конкретному элементу справочника;
- конкретной задаче;
- конкретному бизнес-процессу.
Тогда чаще всего используется модуль объекта.
Если логика относится к объекту конфигурации в целом
Заголовок раздела «Если логика относится к объекту конфигурации в целом»Например:
- найти объект по правилам;
- выполнить общий метод справочника или документа.
Тогда чаще всего используется модуль менеджера.
Если логика относится к форме
Заголовок раздела «Если логика относится к форме»Например:
- обработать нажатие кнопки;
- изменить видимость элемента;
- заполнить реквизиты формы;
- выполнить действие только в рамках конкретной формы.
Тогда используется модуль формы.
Если логика нужна в разных местах
Заголовок раздела «Если логика нужна в разных местах»Например, один и тот же алгоритм вызывается из формы, объекта и обработки.
Тогда такую логику лучше вынести в общий модуль.
Если логика связана со стартом сеанса
Заголовок раздела «Если логика связана со стартом сеанса»Например:
- установить параметры сеанса;
- выполнить действия при начале работы пользователя;
- обработать запуск внешнего соединения.
Тогда используются специальные модули:
- модуль управляемого приложения;
- модуль внешнего соединения;
- модуль сеанса.
🧠 Ключевая мысль
Заголовок раздела «🧠 Ключевая мысль»Модуль определяет контекст, в котором этот код будет выполняться.
Поэтому правильный вопрос звучит не так:
«Куда бы написать эту процедуру?»
А так:
«К чему относится эта логика и в каком контексте она должна выполняться?»
Если логика относится к конкретному объекту — используем модуль объекта.
Если к объекту конфигурации в целом — модуль менеджера.
Если к интерфейсу — модуль формы.
Если алгоритм общий — общий модуль.
Если код связан со стартом или завершением работы — специальные модули приложения, сеанса или внешнего соединения.