При доработке типовых конфигураций, таких как Бухгалтерия предприятия 3.0, перед разработчиками часто встает вопрос: как изменить поведение или состав элементов формы, не создавая при этом проблем при последующих обновлениях? Традиционный путь — заимствование формы в расширение — часто ведет к конфликтам при слиянии (merge) версий. Давайте разберем более современный и грамотный подход к этой задаче.
Вместо того чтобы «утаскивать» всю форму целиком в расширение, мы можем воспользоваться механизмом программного управления элементами формы. Этот подход позволяет сохранять целостность типовой логики и минимизировать вмешательство в структуру метаданных. Суть метода заключается в использовании штатных событий расширения, таких как ПриСозданииНаСервереПосле, и выносе логики в специализированные общие модули.
Для обеспечения чистоты кода и возможности повторного использования функций, создадим в расширении отдельный общий модуль. Это позволит нам изолировать код доработки от основного модуля формы.
Рекомендуем придерживаться следующей структуры:
// В расширении создаем общий модуль, например, "МодификацияФормСервер"
// В этом модуле описываем логику изменения формы:
Процедура ДобавитьРеквизитыАкциза(Форма) Экспорт
// Программно добавляем группу или элементы
НовыйЭлемент = Форма.Элементы.Добавить("ГруппаАкцизы", Тип("ГруппаФормы"), Форма.Элементы.ГруппаДополнительныеРеквизиты);
НовыйЭлемент.Вид = ВидГруппыФормы.ОбычнаяГруппа;
КонецПроцедуры
Теперь нам нужно подключиться к процессу инициализации типовой формы. Для этого в расширении мы создаем обработчик события ПриСозданииНаСервереПосле. Этот метод будет автоматически вызван системой сразу после выполнения типового кода в основной конфигурации.
Реализация в модуле расширения будет выглядеть следующим образом:
&После("ПриСозданииНаСервере")
Процедура Расширение_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Вызываем нашу функцию из общего модуля
МодификацияФормСервер.ДобавитьРеквизитыАкциза(ЭтаФорма);
КонецПроцедуры
Использование этого подхода позволяет нам:
Управляемых форм (УФ) для динамического управления составом элементов.Помимо программной модификации форм, важно следовать правилам, которые помогут сделать вашу систему устойчивой:
БП 3.0.Дополнительные реквизиты и сведения, предоставляемые БСП (Библиотекой стандартных подсистем).Хотя в крупных конфигурациях типа 1С:ERP существуют специализированные переопределяемые модули для модификации форм, в Бухгалтерии предприятия такой механизм выражен не так явно. Тем не менее, программный вызов процедур из общих модулей в обработчиках событий После — это архитектурно верное решение, которое обеспечит вам спокойную работу при обновлении системы на следующие релизы.
Таким образом, для реализации вашей задачи по учету акцизов, сосредоточьтесь на программной работе с Элементы формы внутри расширения, используя общие модули для структурирования кода. Это сэкономит вам массу времени при поддержке конфигурации в будущем.