Откуда берутся данные товаров при формировании печатной формы УПД в 1С:Управление торговлей 11?

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

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

Причина: использование служебной табличной части «ВидыЗапасов»

В типовых решениях линейки ERP 2 / КА 2 / УТ 11 печатные формы регламентированных документов (счета-фактуры, УПД, накладные) формируются не напрямую из основной табличной части Товары. Для целей партионного учета, разделения по номерам ГТД, странам происхождения и налогообложению используется служебная табличная часть — ВидыЗапасов.

Разберем ключевые особенности этого механизма:

  1. Хранилище аналитики: именно в табличной части ВидыЗапасов (или соответствующем регистре) фиксируются ставки и суммы НДС, номера таможенных деклараций (ГТД), признак комиссионного товара и конкретный поставщик.
  2. Связь через ключ: строки табличной части Товары и строки ВидыЗапасов сопоставляются между собой по служебному полю КлючСвязи (или по номеру строки). При проведении документа на одну строку товара может приходиться несколько строк видов запасов (например, если списание произошло с разных партий или ГТД).
  3. Пакет запросов печати: в процедурах формирования временных таблиц (например, ПоместитьВременнуюТаблицуТоваров или ПолучитьДанныеДляПечатнойФормыУПД) выборка идет с объединением или внутренним соединением с таблицей ВидыЗапасов. Если изменить только ТЧ Товары, но не трогать служебную таблицу, алгоритм печати продолжает вытягивать данные партий и аналитик из ВидыЗапасов.
  4. Влияние подчиненного счета-фактуры: если УПД печатается со статусом 1 (совмещает функции накладной и счета-фактуры), данные могут считываться через модуль менеджера документа СчетФактураВыданный, который также опирается на движения и аналитики видов запасов.

Вариант 1. Модификация данных в структуре перед выводом на печать (внешняя печатная форма)

Если задача заключается в создании внешней печатной формы (ВПФ) с кастомным составом колонок или строк, наиболее надежным и безопасным путем является перехват готовой таблицы значений до момента ее передачи в макет.

Рассмотрим порядок действий:

  1. Вызываем типовую функцию получения данных для печати (модуль менеджера документа или общая обработка печати).
  2. Получаем структуру с результатом запросов.
  3. Программно модифицируем полученную таблицу строк товаров (подменяем номенклатуру, пересчитываем суммы, количество или ставки).
  4. Передаем скорректированную структуру в процедуру вывода макета ЗаполнитьТабличныйДокументУПД.

Посмотрим на пример структуры вызова:


// Получаем типовую структуру данных для печати
ДанныеДляПечати = ОбработкаПечати.ПолучитьДанныеДляПечатнойФормыУПД(ПараметрыПечати, МассивОбъектов);

// Обходим полученные документы и модифицируем строки
Для Каждого СтрДокумента Из ДанныеДляПечати.ДанныеДокументов Цикл
    // СтрДокумента.ТаблицаТовары содержит результирующий список строк
    ТаблицаТоваров = СтрДокумента.ТаблицаТовары;
    
    Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
        // Применяем пользовательскую логику изменения полей
        СтрокаТовара.НоменклатураНаименование = "Модифицированное наименование";
    КонецЦикла;
КонецЦикла;

// Выводим данные в табличный документ
ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, КомплектыПечати);

Вариант 2. Корректировка запросов с учетом ТЧ «ВидыЗапасов»

Если печатная форма переписывается полностью и логика строится на собственном пакете запросов, необходимо явно учитывать соединение с табличной частью ВидыЗапасов. Выясним, как выглядит типовое соединение таблиц в запросе печати:


ВЫБРАТЬ
    Товары.Ссылка КАК Ссылка,
    Товары.НомерСтроки КАК НомерСтроки,
    Товары.Номенклатура КАК Номенклатура,
    Товары.Количество КАК Количество,
    ВидыЗапасов.НомерГТД КАК НомерГТД,
    ВидыЗапасов.СтранаПроисхождения КАК СтранаПроисхождения,
    ВидыЗапасов.СтавкаНДС КАК СтавкаНДС,
    ВидыЗапасов.СуммаНДС КАК СуммаНДС
ПОМЕСТИТЬ ВтТоварыИЗапасы
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК Товары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ВидыЗапасов КАК ВидыЗапасов
        ПО Товары.Ссылка = ВидыЗапасов.Ссылка
            И Товары.КлючСвязи = ВидыЗапасов.КлючСвязи
ГДЕ
    Товары.Ссылка В(&МассивДокументов)

При замене ТЧ Товары на собственную таблицу необходимо либо отказаться от соединения с ВидыЗапасов (если данные по ГТД и странам берутся из других источников), либо обеспечить корректное заполнение реквизита КлючСвязи в кастомной табличной части и актуализировать данные видов запасов при проведении документа.

Вариант 3. Переопределение логики через расширение конфигурации

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

  1. В модуле менеджера Документ.РеализацияТоваровУслуг переопределяем процедуру ПоместитьВременнуюТаблицуТоваров, подменяя текст запроса к источникам данных.
  2. В обработке ПечатьОбщихФорм перехватываем функцию заполнения реквизитов строки универсального документа, дополняя результирующий ТабличныйДокумент нестандартными полями.

Таким образом, при работе с печатью УПД в УТ 11 необходимо всегда учитывать разделение данных между пользовательской табличной частью Товары и учетной табличной частью ВидыЗапасов.

← На главную