Как правильно программно дорабатывать типовые формы в 1С:Бухгалтерии 3.0 без заимствования?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При доработке типовых конфигураций, таких как Бухгалтерия предприятия 3.0, перед разработчиками часто встает вопрос: как изменить поведение или состав элементов формы, не создавая при этом проблем при последующих обновлениях? Традиционный путь — заимствование формы в расширение — часто ведет к конфликтам при слиянии (merge) версий. Давайте разберем более современный и грамотный подход к этой задаче.

Основные принципы профессиональной доработки форм

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

Шаг 1: Создание общего модуля для обработки логики

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

Рекомендуем придерживаться следующей структуры:


// В расширении создаем общий модуль, например, "МодификацияФормСервер"
// В этом модуле описываем логику изменения формы:
Процедура ДобавитьРеквизитыАкциза(Форма) Экспорт
    // Программно добавляем группу или элементы
    НовыйЭлемент = Форма.Элементы.Добавить("ГруппаАкцизы", Тип("ГруппаФормы"), Форма.Элементы.ГруппаДополнительныеРеквизиты);
    НовыйЭлемент.Вид = ВидГруппыФормы.ОбычнаяГруппа;
КонецПроцедуры

Шаг 2: Вызов логики из модуля формы

Теперь нам нужно подключиться к процессу инициализации типовой формы. Для этого в расширении мы создаем обработчик события ПриСозданииНаСервереПосле. Этот метод будет автоматически вызван системой сразу после выполнения типового кода в основной конфигурации.

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


&После("ПриСозданииНаСервере")
Процедура Расширение_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Вызываем нашу функцию из общего модуля
    МодификацияФормСервер.ДобавитьРеквизитыАкциза(ЭтаФорма);
КонецПроцедуры

Использование этого подхода позволяет нам:

  1. Избежать прямого заимствования всей формы, что значительно упрощает обновление конфигурации.
  2. Использовать все возможности Управляемых форм (УФ) для динамического управления составом элементов.
  3. Сохранять логику «БП 3.0» в чистоте, не перегружая ее избыточными реквизитами, если это можно решить программно.

Рекомендации по грамотной доработке типовой БП 3.0

Помимо программной модификации форм, важно следовать правилам, которые помогут сделать вашу систему устойчивой:

Хотя в крупных конфигурациях типа 1С:ERP существуют специализированные переопределяемые модули для модификации форм, в Бухгалтерии предприятия такой механизм выражен не так явно. Тем не менее, программный вызов процедур из общих модулей в обработчиках событий После — это архитектурно верное решение, которое обеспечит вам спокойную работу при обновлении системы на следующие релизы.

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

← На главную