Реализация печати Универсального Передаточного Документа (УПД) (поможет внешняя печатная форма УПД для 1С:Бухгалтерия 3.0) во внешней обработке для конфигурации «Бухгалтерия предприятия 3.0» является частой задачей для разработчика. Сложность заключается в том, что механизмы печати УПД глубоко интегрированы в типовые модули и зависят от множества факторов: даты документа, статуса (1 или 2), наличия прослеживаемых товаров и актуальных постановлений правительства. В этой статье мы подробно разберем, как правильно использовать типовой функционал, не «изобретая велосипед» и не копируя тысячи строк кода.
Прежде всего, проанализируем, как система 1С формирует УПД. Основная логика сосредоточена в обработке ПечатьУПД и общем модуле УчетНДС. Пытаться просто вызвать УправлениеПечатью.СформироватьПечатныеФормы с жестко заданным макетом — не самый гибкий путь, так как имена макетов (например, УПДСтатус1_534) меняются вместе с законодательством.
Рассмотрим правильный подход, который заключается в использовании структуры параметров печати. Это позволит системе автоматически определить нужный макет и заполнить все необходимые данные, включая сведения о налогах и подписях. Разработка множества внешних печатных форм по такому принципу существенно ускорит вашу работу — для этого подойдёт набор внешних печатных форм для 1С:Бухгалтерия 3.0.
Для того чтобы получить табличный документ УПД, нам необходимо сформировать специальную структуру. В модуле УчетНДС есть функции, которые упрощают этот процесс. Вместо ручного создания соответствий, воспользуемся следующим подходом:
// Инициализируем структуру параметров
СтруктураПараметровПечати = УчетНДС.НовыйСтруктураПараметровПечатиУПД_УКД();
// Наполняем структуру необходимыми данными
СтруктураПараметровПечати.МассивОбъектов = МассивОбъектов; // Ссылки на документы (например, РеализацияТоваровУслуг)
СтруктураПараметровПечати.ОбъектыПечати = ОбъектыПечати; // Соответствие для связи документа и табдока
СтруктураПараметровПечати.ТолькоПередаточныйДокумент = Ложь; // Ложь - Статус 1 (Счет-фактура + акт), Истина - Статус 2
// Определяем актуальный макет программно
ДанныеМакеты = УчетНДС.МакетАктуальногоУПД(МассивОбъектов[0].Дата);
СтруктураПараметровПечати.ПолныйПутьКМакету = ДанныеМакеты.ПолныйПутьКМакету;
СтруктураПараметровПечати.КлючПараметровПечати = ДанныеМакеты.КлючПараметровПечати;
Важный момент: использование функции УчетНДС.МакетАктуальногоУПД гарантирует, что ваша внешняя обработка не «сломается» после очередного обновления форм 1С, так как система сама подставит актуальное имя макета на дату документа.
После подготовки параметров мы вызываем основной метод печати. В 1С:Бухгалтерии 3.0 за формирование тела документа отвечает функция УчетНДС.ПечатьУниверсальныхПередаточныхДокументов. Она возвращает уже заполненный ТабличныйДокумент.
Разберем пример вызова в контексте внешней обработки:
// Вызываем типовой метод формирования
ТабличныйДокумент = УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(СтруктураПараметровПечати);
// Если необходимо вернуть результат в коллекцию печатных форм (для БСП)
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПД", "Универсальный передаточный документ", ТабличныйДокумент);
Проанализируем ситуацию, если вам нужно изменить логику заполнения. Часто разработчики совершают ошибку, копируя весь код формирования УПД к себе во внешнюю обработку. Это ведет к потере поддержки прослеживаемости товаров (РНПТ) и некорректному выводу кодов маркировки. Правильнее будет использовать типовой вызов, а затем программно модифицировать полученный ТабличныйДокумент (например, через поиск нужных областей и замену текста) — удобнее через конструктор печатных форм без программирования.
Выясним причину, по которой УПД может печататься некорректно. Основной параметр здесь — ТолькоПередаточныйДокумент. Рассмотрим, как он влияет на форму:
Ложь. В этом случае документ выступает одновременно и как первичный документ, и как счет-фактура. Программа будет искать данные в регистре сведений «Журнал учета счетов-фактур» или связанных документах «Счет-фактура выданный».Истина. УПД используется только как первичный передаточный документ (аналог ТОРГ-12 или Акта). Поля, относящиеся к НДС и номеру счета-фактуры, могут быть скрыты или заполнены прочерками в зависимости от настроек.С 2021 года структура УПД существенно усложнилась из-за внедрения системы прослеживаемости. Если в документе реализации присутствуют товары с РНПТ, система должна вывести графы 11, 12, 13. При вызове ПечатьУниверсальныхПередаточныхДокументов типовой механизм автоматически собирает данные из регистров ПрослеживаемыеТовары. Если вы пытаетесь формировать запрос к данным документа самостоятельно, убедитесь, что вы включили поля прослеживаемости, иначе колонки останутся пустыми или форма выдаст ошибку компоновки.
Рассмотрим по шагам оптимальную стратегию разработки:
УчетНДС, ПечатьУПД).&Вместо или &После в расширении для процедуры Печать в модуле менеджера документа — для этого подойдёт обработка добавления штрихкодов в УПД.Таким образом, мы выяснили, что для успешной печати УПД во внешней обработке достаточно правильно подготовить СтруктураПараметровПечати и передать её в функцию УчетНДС.ПечатьУниверсальныхПередаточныхДокументов. Этот метод является наиболее надежным и устойчивым к обновлениям типовой конфигурации 1С:Бухгалтерия 3.0.