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