Почему при печати документа одна строка табличной части превращается в две?

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

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

Причина 1: Печать «по движениям» регистров

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

Рассмотрим ситуацию: в табличной части документа указано «Товар А — 10 шт.». Однако при проведении документа система обнаруживает, что на складе числится 5 шт. этого товара с одним номером ГТД и еще 5 шт. — с другим (или вообще без номера). В регистре (например, ВыручкаИСебестоимостьПродаж или ВидыЗапасов) появляются две записи. Печатная форма, обращаясь к этим регистрам, видит две разные строки и выводит их отдельно.

Причина 2: Разные номера ГТД и страны происхождения

Как показывает практика и обсуждения специалистов, наиболее частая причина — заполненный номер ГТД в одной части партии и пустой (или другой) в другой. Даже если вы не заполняли эти данные в самом документе, система может подставить их автоматически при проведении (механизм автораспределения ГТД по FIFO).

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

Как найти виновника: пошаговая инструкция

Если вы столкнулись с подобным поведением, выполним следующие действия:

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

Разбор кода: как формируется запрос на печать

Типичная ошибка в нетиповых печатных формах заключается в том, что запрос собирает данные из табличной части, но присоединяет к ним данные из регистров ЛЕВЫМ СОЕДИНЕНИЕМ. Рассмотрим пример упрощенного запроса, который может приводить к дублированию:


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

Если в регистре по этой накладной и этой номенклатуре окажется две записи (например, распределение по партиям), то ЛЕВОЕ СОЕДИНЕНИЕ удвоит строку из табличной части. Чтобы этого избежать, данные в запросе должны быть четко сгруппированы или выбираться из одного источника истинных данных.

Как исправить проблему?

Рассмотрим несколько вариантов решения в зависимости от причины:

Вариант А: Исправление данных в документе

Если разделение произошло из-за того, что часть товара списалась с ГТД, а часть без, необходимо проверить остатки. Возможно, на складе «зависли» остатки без указания номеров ГТД. Рекомендуется воспользоваться обработкой Редактирование номеров ГТД или перепровести документы поступления, чтобы выровнять аналитику.

Вариант Б: Отключение учета ГТД (если он не нужен)

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

Вариант В: Корректировка печатной формы

Если требования бизнеса допускают объединение строк (например, клиенту не важны номера ГТД в накладной), можно модифицировать запрос печатной формы. В запросе необходимо добавить группировку по Номенклатуре и суммирование по полю Количество, исключив при этом НомерГТД из списка выбираемых полей.

Проанализируем пример группировки в коде:


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

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

Резюме

Выясним причину дублирования строк: чаще всего это следствие корректной работы системы по учету импортных товаров. 1С просто показывает вам, что фактически вы отгружаете товар из разных «корзин» (партий/ГТД). Исправление должно начинаться с анализа движений документа и только в крайнем случае переходить к правке программного кода печатных форм.

← На главную