Почему в 1С:УНФ при печати УПД и ТОРГ-12 подставляется базовая единица измерения вместо выбранной в документе?

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

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

Разбор архитектурной особенности

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

Рассмотрим подробнее основные причины такого поведения системы:

  1. Синхронизация с «1С:Бухгалтерией» (БП 3.0): УНФ часто работает в связке с бухгалтерскими программами. В 1С:Бухгалтерия 8 учет номенклатуры ведется в строго определенных единицах. Если в УНФ мы выписываем документ в упаковках, а в бухгалтерию при обмене данными информация попадет в базовых единицах, может возникнуть рассогласование печатной формы и данных в базе получателя. Чтобы избежать проблем при налоговых проверках, разработчики унифицировали вывод единиц в регламентированной первичке.
  2. Точность расчетов и округление НДС: При использовании упаковок (например, 1 упаковка = 7 штук) цена за упаковку часто превращается в число с бесконечной дробной частью. В УПД цена за единицу и общая сумма жестко связаны. Использование минимальной базовой единицы позволяет системе выполнять расчет Количество * Цена более точно, минимизируя расхождения в копейках при расчете НДС.
  3. Требования ГИС МТ (Маркировка): С развитием системы «Честный Знак» важность базовой единицы возросла. Если товар зарегистрирован в национальном каталоге в штуках, то и в электронном УПД он должен проходить в штуках для корректного списания кодов маркировки.

Технический анализ механизмов печати

Выясним, как это реализовано на уровне программного кода. В конфигурации 1.6 за формирование данных для печати отвечает специальный МенеджерПечати. При формировании запроса для регламентированных форм система обращается не к реквизиту ЕдиницаИзмерения табличной части документа, а выполняет соединение со справочником Номенклатура.

Проанализируем примерный фрагмент логики запроса, который используется в недрах общих модулей печати:


// Пример упрощенной логики запроса в менеджере печати
Запрос.Текст = 
"ВЫБРАТЬ
|	ТаблицаДокумента.Номенклатура КАК Номенклатура,
|	ТаблицаДокумента.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаДляПечати,
|	ТаблицаДокумента.Количество * ТаблицаДокумента.Коэффициент КАК КоличествоВБазовыхЕдиницах,
|	ТаблицаДокумента.Сумма / (ТаблицаДокумента.Количество * ТаблицаДокумента.Коэффициент) КАК ЦенаЗаБазовуюЕдиницу
|ИЗ
|	Документ.РасходнаяНакладная.Запасы КАК ТаблицаДокумента
|ГДЕ
|	ТаблицаДокумента.Ссылка = &Ссылка";

Как мы видим, поле ЕдиницаДляПечати берется напрямую через точку от Номенклатуры. Именно поэтому, какие бы изменения мы ни вносили в строку документа в пользовательском режиме, печатная форма будет игнорировать их, пересчитывая всё в базовые единицы хранения.

Варианты решения проблемы

Поскольку мы определили, что это поведение является «фичей» системы, у нас есть несколько путей решения задачи, если ваш бизнес требует печати именно в упаковках.

Способ 1: Использование Внешних печатных форм (ВПФ)

Это самый правильный и безопасный метод с точки зрения поддержки программы. Мы не меняем типовой код, а добавляем в систему новый обработчик печати. Рассмотрим алгоритм действий:

  1. Создаем новую внешнюю обработку и подключаем к ней макет УПД или ТОРГ-12.
  2. В модуле объекта описываем экспортную процедуру Печать.
  3. В запросе для получения данных указываем получение ЕдиницыИзмерения именно из табличной части документа Запасы.
  4. Подключаем готовую обработку через раздел Администрирование — Печатные формы, отчеты и обработки.

Преимущество этого метода в том, что при очередном обновлении конфигурации ваши настройки не «слетят», и логика печати останется прежней.

Способ 2: Настройки в версии 1С:УНФ 3.0

Разберем ситуацию для тех, кто планирует переход на новые версии. В линейке УНФ 3.0 разработчики услышали пожелания пользователей и добавили больше гибкости. Теперь в карточке номенклатуры можно явно указать реквизит Единица для печати.

Если этот реквизит заполнен, то в регламентированных формах будет использоваться именно он. Это избавляет от необходимости программирования внешних форм. Если вы всё еще работаете на версии 1.6, это весомый повод задуматься об обновлении.

Способ 3: Изменение базовой единицы

Рассмотрим вариант без программирования. Если вы всегда продаете товар в одних и тех же упаковках (например, только коробками по 10 кг), вы можете установить «кг» или «коробку» в качестве базовой единицы хранения прямо в карточке номенклатуры. Однако будьте осторожны: если у вас уже есть движения по этой позиции (остатки на складах), менять базовую единицу измерения категорически не рекомендуется, так как это приведет к полному искажению складского учета и себестоимости.

Заключение

Мы выяснили, что «тайный смысл» поведения УНФ 1.6 заключается в обеспечении жесткого соответствия между складским учетом, финансовыми результатами и регламентированной отчетностью для передачи в бухгалтерию. Для обхода этого ограничения лучше всего использовать внешние печатные формы, где запрос будет перенастроен на получение единицы измерения из документа, а не из карточки товара. Это позволит сохранить целостность типовой конфигурации и удовлетворить требования контрагентов к оформлению документов.

← На главную