Почему после обновления 1С:Бухгалтерии перестала сворачиваться номенклатура при печати счетов-фактур?

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

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

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

Причина проблемы: особенности архитектуры учета НДС

Для понимания причин сбоя проанализируем, как устроен документ СчетФактураВыданный в конфигурации «Бухгалтерия предприятия 3.0»:

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

Способ 1. Восстановление изменений в общем модуле подсистемы НДС

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

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

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

Посмотрим на пример программной свертки таблицы значений перед ее выводом в табличный документ:


// ТаблицаДанных содержит колонки: НоменклатураГруппа, СтавкаНДС, Количество, Сумма, СуммаНДС, Всего
ТаблицаДанных.Свернуть("НоменклатураГруппа, СтавкаНДС", "Количество, Сумма, СуммаНДС, Всего");

Если данные собираются запросом, более производительным решением будет корректировка самого текста запроса с использованием предложения СГРУППИРОВАТЬ ПО и агрегатной функции СУММА().

Способ 2. Использование расширения конфигурации (рекомендуемый вариант)

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

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

  1. Создадим новое расширение конфигурации с назначением Адаптация или Дополнение.
  2. Добавим в расширение требуемый общий модуль подсистемы учета НДС или модуль менеджера документа реализации.
  3. Переопределим процедуру печати или функцию сбора данных с помощью аннотации &Вместо или &ИзменениеИКонтроль.

Пример перехвата метода в расширении:


&Вместо("СформироватьТаблицуПечатиСчетаФактуры")
Функция Расш1_СформироватьТаблицуПечатиСчетаФактуры(МассивОбъектов, ОбъектыПечати)
    Таблица = ПродолжитьВызов(МассивОбъектов, ОбъектыПечати);
    
    // Выполняем группировку строк по номенклатурной группе и ставке НДС
    Таблица.Свернуть("НоменклатурнаяГруппа, СтавкаНДС", "Количество, СуммаБезНДС, СуммаНДС, Всего");
    
    Возврат Таблица;
КонецФункции

Способ 3. Подключение внешней печатной формы (ВПФ)

Если вмешательство в общую логику формирования регламентированных документов нежелательно, создадим внешнюю печатную форму через механизм БСП (Библиотеки стандартных подсистем):

  1. Создадим внешнюю обработку и добавим стандартную функцию СведенияОВнешнейОбработке().
  2. Перенесем в модуль обработки макет счета-фактуры и код формирования табличного документа.
  3. В коде заполнения сгруппируем номенклатурные позиции.
  4. Подключим обработку в режиме «1С:Предприятие» через раздел Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки.

Важные ограничения и риски при группировке счетов-фактур

При реализации свертки строк в счетах-фактурах важно учитывать следующие законодательные и технические нюансы:

  1. Электронный документооборот (ЭДО): Свертка данных в печатной форме изменяет только визуальное представление документа на экране и бумаге. При формировании электронного УПД через ЭДО файл XML создается строго по данным регистров и документа-основания. Содержимое XML и печатной копии будет различаться.
  2. Прослеживаемость и ГТД: Нельзя сворачивать позиции с товарами, подлежащими обязательной прослеживаемости (РНПТ), а также импортные товары с разными номерами ГТД и странами происхождения. Каждая такая позиция должна выводиться отдельной строкой.
  3. Округление НДС: При суммировании предварительно рассчитанных сумм НДС по отдельным строкам могут возникать расхождения на копейки по сравнению с расчетом налога от общей свернутой суммы. Необходимо следить за тем, чтобы итоговые суммы строго сходились с регистром НДС Продажи и Книгой продаж.
← На главную