При оформлении документов реализации с большим количеством позиций часто требуется сгруппировать однотипные строки (например, по номенклатурным группам или ставке НДС), чтобы печатная форма не занимала десятки страниц. Однако после типового обновления конфигурации «1С:Бухгалтерия предприятия 3.0» пользователи нередко сталкиваются с ситуацией: в актах и накладных группировка продолжает работать, а при печати счетов-фактур снова выводится полный перечень номенклатуры.
Разберем архитектурные особенности формирования печатных форм в программе, выясним причину сбоя и рассмотрим способы реализации надежной группировки данных.
Для понимания причин сбоя проанализируем, как устроен документ СчетФактураВыданный в конфигурации «Бухгалтерия предприятия 3.0»:
РеализацияТоваровУслуг) или формируются по данным регистров учета НДС.УчетНДСПечатьСервер и УчетНДСФормированиеПечатныхФорм.Если конфигурация уже снята с полной поддержки и доработки вносились непосредственно в код, найдем место формирования печатных данных и восстановим логику свертки.
Разберем по шагам алгоритм поиска:
СчетФактураВыданный или РеализацияТоваровУслуг в процедуру Печать.УчетНДСПечатьСервер).Посмотрим на пример программной свертки таблицы значений перед ее выводом в табличный документ:
// ТаблицаДанных содержит колонки: НоменклатураГруппа, СтавкаНДС, Количество, Сумма, СуммаНДС, Всего
ТаблицаДанных.Свернуть("НоменклатураГруппа, СтавкаНДС", "Количество, Сумма, СуммаНДС, Всего");
Если данные собираются запросом, более производительным решением будет корректировка самого текста запроса с использованием предложения СГРУППИРОВАТЬ ПО и агрегатной функции СУММА().
Чтобы исключить потерю доработок при последующих обновлениях программы, вынесем изменения в расширение конфигурации. Это позволит оставить основную конфигурацию на полной поддержке.
Рассмотрим порядок действий:
&Вместо или &ИзменениеИКонтроль.Пример перехвата метода в расширении:
&Вместо("СформироватьТаблицуПечатиСчетаФактуры")
Функция Расш1_СформироватьТаблицуПечатиСчетаФактуры(МассивОбъектов, ОбъектыПечати)
Таблица = ПродолжитьВызов(МассивОбъектов, ОбъектыПечати);
// Выполняем группировку строк по номенклатурной группе и ставке НДС
Таблица.Свернуть("НоменклатурнаяГруппа, СтавкаНДС", "Количество, СуммаБезНДС, СуммаНДС, Всего");
Возврат Таблица;
КонецФункции
Если вмешательство в общую логику формирования регламентированных документов нежелательно, создадим внешнюю печатную форму через механизм БСП (Библиотеки стандартных подсистем):
СведенияОВнешнейОбработке().При реализации свертки строк в счетах-фактурах важно учитывать следующие законодательные и технические нюансы:
НДС Продажи и Книгой продаж.