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