Как отключить сворачивание одинаковых строк в УПД при печати в 1С?

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

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

В этой статье мы разберем, почему система ведет себя именно так, проанализируем программные механизмы группировки и выясним, как заставить 1С выводить строки раздельно, сохраняя при этом корректность учета.

Почему происходит сворачивание строк в УПД?

Прежде всего, давайте разберем логику самой фирмы 1С. Алгоритмы печати счетов-фактур и УПД строятся на основании требований Постановления Правительства РФ №1137. Согласно правилам заполнения этих документов, если в рамках одной отгрузки поставляются товары с идентичным наименованием, единицей измерения и ценой, их допускается объединять в одну строку для экономии места в печатном бланке.

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

Проанализируем техническую сторону проблемы

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

Разберем основные этапы формирования данных:

  1. Вызов функции печати (например, в модуле менеджера документа РеализацияТоваровУслуг).
  2. Подготовка временных таблиц, в которые помещаются данные из табличной части документа.
  3. Применение конструкции СГРУППИРОВАТЬ ПО (GROUP BY) в финальном запросе.

Ключевым моментом здесь является список полей, по которым идет группировка. Обычно это Номенклатура, Характеристика, СтавкаНДС, ЕдиницаИзмерения и Цена. Если значения во всех этих полях совпадают, строки объединяются.

Решение №1: Создание внешней печатной формы

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

В запросе формирования данных необходимо найти блок, отвечающий за объединение строк. Рассмотрим пример того, как может выглядеть фрагмент запроса до и после изменений.

Типовой вариант (упрощенно):


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

Исправленный вариант для раздельной печати:

Чтобы строки не сворачивались, нам нужно добавить в группировку уникальный идентификатор. Самый простой способ — добавить поле НомерСтроки.


ВЫБРАТЬ
    ТЧ.НомерСтроки КАК НомерСтроки,
    ТЧ.Номенклатура КАК Номенклатура,
    ТЧ.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ТЧ.Цена КАК Цена,
    ТЧ.Количество КАК Количество,
    ТЧ.Сумма КАК Сумма
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК ТЧ
ГДЕ
    ТЧ.Ссылка = &Ссылка
// Группировка больше не требуется или должна включать НомерСтроки

Решение №2: Использование поля «Содержание»

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

Выясним причину, почему это работает: поле Содержание почти всегда входит в «ключ» сравнения строк при заполнении структуры данных для макета печати.

Решение №3: Модификация модуля «УчетНДСПереопределяемый»

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

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

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


&Вместо("СформироватьЗапросДляПечатиУПД")
Функция ИмяРасширения_СформироватьЗапросДляПечатиУПД(ПараметрыПечати)
    // Копируем текст типового запроса
    ТекстЗапроса = "ВЫБРАТЬ ..."; 
    
    // Вносим правку: добавляем поле НомерСтроки в выборку и в СГРУППИРОВАТЬ ПО
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "СГРУППИРОВАТЬ ПО", "СГРУППИРОВАТЬ ПО ТЧ.НомерСтроки, ");
    
    // Возвращаем измененный запрос
    Возврат ТекстЗапроса;
КонецФункции

Важные нюансы и округления

Стоит учитывать, что УПД — это строго регламентированный документ. В графе «Цена» выводится значение с точностью до двух знаков после запятой (копейки). Если после применения разных наценок расчетная цена за единицу совпадает до копейки (например, 100.00 руб. в обеих строках), 1С с большой вероятностью объединит эти строки, даже если в документе-основании они разные.

Посмотрим на пример: Строка 1: Товар А, кол-во 10, наценка 5%, итоговая сумма 1050 руб. Цена = 105 руб. Строка 2: Товар А, кол-во 20, наценка 5%, итоговая сумма 2100 руб. Цена = 105 руб. В этом случае система видит идентичную цену и объединяет их. Если же наценки разные (например, 5% и 10%), цены за единицу будут отличаться (105 руб. и 110 руб.), и строки выведутся раздельно автоматически.

Итоги

Подведем итоги нашей совместной работы по решению проблемы сворачивания строк:

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

Понимая механизмы работы платформы 1С с временными таблицами и группировками в запросах, вы сможете гибко настраивать печатные формы под любые нужды бизнеса, сохраняя при этом юридическую значимость документов.

← На главную