Два самых важных модуля для документа — это Модуль объекта и Модуль формы. Давайте разберемся, что это такое и когда что использовать.
Что такое модули и зачем они нужны?
Представьте, что документ — это ваш персонаж в игре.
-
Модуль объекта — это его "мозг" и "внутренние органы". Здесь описывается сама сущность документа: как он проводится, какие данные проверяет, как взаимодействует с другими объектами системы.
-
Модуль формы — это его "внешний вид" и "рефлексы". Здесь описывается то, что видит и с чем взаимодействует пользователь: что происходит при нажатии кнопки, как меняются поля при выборе значения, различные "украшения" интерфейса.
Модуль объекта (МодульДокумента)
Назначение: Содержит логику, связанную с данными и поведением самого документа как объекта системы.
Ключевые события, обрабатываемые в модуле объекта:
-
ОбработкаПроведения()иОбработкаПроведенияОтмена()-
Это самые важные процедуры! Здесь вы описываете, какие движения по регистрам должен сделать документ при проведении (например, увеличить остатки на складе) и, соответственно, отменить при сторнировании.
-
Пример: При проведении документа "ПоступлениеТоваров" нужно увеличить регистр остатков товаров на складе.
-
-
ОбработкаЗаполнения()-
Срабатывает при создании документа на основании другого (например, создание "Реализации" из "ЗаказаКлиента"). Здесь вы можете программно заполнить табличную часть и реквизиты.
-
-
ПередЗаписью()-
Срабатывает перед сохранением документа (как нового, так и существующего). Идеальное место для проверки корректности введенных данных.
-
Пример: Проверить, что дата документа не больше текущей даты.
-
Как открыть? В Конфигураторе откройте документ, перейдите на вкладку "Действия" -> "Открыть объект модуля".
Практический пример: Обработка проведения
bsl// В Модуле объекта документа "ЗаказКлиента" Процедура ОбработкаПроведения(Отказ, РежимПроведения) // Движения по регистру сведений "РезервыТоваров" Движения.РезервыТоваров.Записать(); КонецПроцедуры
Модуль формы
Назначение: Содержит логику, связанную с взаимодействием пользователя с формой документа.
Ключевые события, обрабатываемые в модуле формы:
-
События элементов формы (например,
ПриИзменении,НачалоВыбора).-
Пример: В поле "Склад" при изменении значения нужно очистить поле "Ячейка".
-
-
Обработка нажатия кнопок (
ПриНажатии).-
Пример: Сделать кнопку "Подобрать товары", которая открывает специальную форму для выбора.
-
-
События самой формы (
ПриОткрытии,ПриЗакрытии).
Как открыть? В Конфигураторе откройте документ, перейдите на вкладку "Формы", откройте нужную форму (например, "ФормаДокумента"), и нажмите кнопку "Модуль" в панели инструментов.
Практический пример: Реакция на изменение поля
bsl// В Модуле формы документа "ЗаказКлиента" Процедура СкладПриИзменении(Элемент) // Если пользователь поменял склад, очищаем ячейку хранения Объект.Ячейка = Справочники.ЯчейкиХранения.ПустаяСсылка(); КонецПроцедуры
Сводная таблица: Модуль объекта vs Модуль формы
| Критерий | Модуль объекта | Модуль формы |
|---|---|---|
| Что описывает? | "Бизнес-логику", данные, движения | Пользовательский интерфейс, взаимодействие |
| Когда выполняется? | При любых операциях с объектом (проведение, запись), независимо от того, через какую форму это происходит | Только при работе пользователя с конкретной формой |
| Контекст |
Доступен объект Объект (записываемый документ)
|
Доступен объект Объект и ЭлементыФормы
|
| Типичные задачи | Проведение, проверка данных, заполнение | Валидация ввода, динамическое изменение формы, кнопки |
Золотое правило для новичка:
Если ваше действие меняет ДАННЫЕ в системе (провести, записать, сделать движение) — это в Модуль объекта. Если ваше действие меняет ВНЕШНИЙ ВИД или обрабатывает действие пользователя (нажал кнопку, изменил поле) — это в Модуль формы.
