Как программно сформировать печатную форму УПД во внешней обработке в 1С:Бухгалтерия 3.0

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

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

Анализ механизмов печати УПД в типовой конфигурации

Прежде всего, проанализируем, как система 1С формирует УПД. Основная логика сосредоточена в обработке ПечатьУПД и общем модуле УчетНДС. Пытаться просто вызвать УправлениеПечатью.СформироватьПечатныеФормы с жестко заданным макетом — не самый гибкий путь, так как имена макетов (например, УПДСтатус1_534) меняются вместе с законодательством.

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

Шаг 1. Подготовка структуры параметров печати

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


// Инициализируем структуру параметров
СтруктураПараметровПечати = УчетНДС.НовыйСтруктураПараметровПечатиУПД_УКД();

// Наполняем структуру необходимыми данными
СтруктураПараметровПечати.МассивОбъектов = МассивОбъектов; // Ссылки на документы (например, РеализацияТоваровУслуг)
СтруктураПараметровПечати.ОбъектыПечати  = ОбъектыПечати;  // Соответствие для связи документа и табдока
СтруктураПараметровПечати.ТолькоПередаточныйДокумент = Ложь; // Ложь - Статус 1 (Счет-фактура + акт), Истина - Статус 2

// Определяем актуальный макет программно
ДанныеМакеты = УчетНДС.МакетАктуальногоУПД(МассивОбъектов[0].Дата);
СтруктураПараметровПечати.ПолныйПутьКМакету = ДанныеМакеты.ПолныйПутьКМакету;
СтруктураПараметровПечати.КлючПараметровПечати = ДанныеМакеты.КлючПараметровПечати;

Важный момент: использование функции УчетНДС.МакетАктуальногоУПД гарантирует, что ваша внешняя обработка не «сломается» после очередного обновления форм 1С, так как система сама подставит актуальное имя макета на дату документа.

Шаг 2. Вызов функции формирования печатной формы

После подготовки параметров мы вызываем основной метод печати. В 1С:Бухгалтерии 3.0 за формирование тела документа отвечает функция УчетНДС.ПечатьУниверсальныхПередаточныхДокументов. Она возвращает уже заполненный ТабличныйДокумент.

Разберем пример вызова в контексте внешней обработки:


// Вызываем типовой метод формирования
ТабличныйДокумент = УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(СтруктураПараметровПечати);

// Если необходимо вернуть результат в коллекцию печатных форм (для БСП)
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПД", "Универсальный передаточный документ", ТабличныйДокумент);

Проанализируем ситуацию, если вам нужно изменить логику заполнения. Часто разработчики совершают ошибку, копируя весь код формирования УПД к себе во внешнюю обработку. Это ведет к потере поддержки прослеживаемости товаров (РНПТ) и некорректному выводу кодов маркировки. Правильнее будет использовать типовой вызов, а затем программно модифицировать полученный ТабличныйДокумент (например, через поиск нужных областей и замену текста) — удобнее через конструктор печатных форм без программирования.

Особенности работы со статусами УПД

Выясним причину, по которой УПД может печататься некорректно. Основной параметр здесь — ТолькоПередаточныйДокумент. Рассмотрим, как он влияет на форму:

  1. Статус «1»: Параметр установлен в Ложь. В этом случае документ выступает одновременно и как первичный документ, и как счет-фактура. Программа будет искать данные в регистре сведений «Журнал учета счетов-фактур» или связанных документах «Счет-фактура выданный».
  2. Статус «2»: Параметр установлен в Истина. УПД используется только как первичный передаточный документ (аналог ТОРГ-12 или Акта). Поля, относящиеся к НДС и номеру счета-фактуры, могут быть скрыты или заполнены прочерками в зависимости от настроек.

Обработка прослеживаемых товаров

С 2021 года структура УПД существенно усложнилась из-за внедрения системы прослеживаемости. Если в документе реализации присутствуют товары с РНПТ, система должна вывести графы 11, 12, 13. При вызове ПечатьУниверсальныхПередаточныхДокументов типовой механизм автоматически собирает данные из регистров ПрослеживаемыеТовары. Если вы пытаетесь формировать запрос к данным документа самостоятельно, убедитесь, что вы включили поля прослеживаемости, иначе колонки останутся пустыми или форма выдаст ошибку компоновки.

Рекомендации по разработке внешней печатной формы

Рассмотрим по шагам оптимальную стратегию разработки:

  1. Не копируйте типовые модули. Используйте экспортные функции общих модулей (УчетНДС, ПечатьУПД).
  2. Используйте расширения, если нужно менять логику. Если задача состоит в том, чтобы изменить расчет суммы или добавить колонку, лучше использовать механизм &Вместо или &После в расширении для процедуры Печать в модуле менеджера документа — для этого подойдёт обработка добавления штрихкодов в УПД.
  3. Проверяйте параметр «ОбъектыПечати». Это соответствие необходимо для корректной работы механизма предварительного просмотра и отправки по почте. Если его не заполнить, при печати нескольких документов система не сможет сопоставить страницы с конкретными ссылками.
  4. Тестируйте на документах разных периодов. Форма УПД за 2023 год отличается от формы за 2024 год. Обязательно проверяйте, как ваша обработка ведет себя с «ретроспективными» данными.

Таким образом, мы выяснили, что для успешной печати УПД во внешней обработке достаточно правильно подготовить СтруктураПараметровПечати и передать её в функцию УчетНДС.ПечатьУниверсальныхПередаточныхДокументов. Этот метод является наиболее надежным и устойчивым к обновлениям типовой конфигурации 1С:Бухгалтерия 3.0.

← На главную