Как вывести подписи и подписантов в подвал группировки в отчете СКД?

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

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

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

Почему макет подвала может не выводиться в СКД

Выясним типичные ошибки при настройке макетов в схеме компоновки данных:

  1. Отключен расчет итогов для группировки. Если в настройках отчета для группировки параметр Расположение итогов установлен в значение Нет, макет с типом Подвал платформой просто игнорируется.
  2. Не задано системное имя группировки. Если макет на вкладке Макеты привязывается к группировке по имени, это имя должно быть обязательно задано через контекстное меню структуры (Установить имя...), а не просто прописано в пользовательском заголовке.
  3. Включен автовыбор полей в подвале. Если для фиктивной строки подвала в настройках выбранных полей остается признак Авто, система пытается применить к ней стандартную сетку колонок отчета, что искажает вывод макета.

Способ 1. Добавление фиктивной группировки с отдельным макетом

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

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

  1. Перейдем на вкладку Настройки в схеме компоновки данных. Внутрь родительской группировки (после таблицы или детальных записей) добавим новую группировку без указания поля группировки (пустые детальные записи).
  2. Нажмем правой кнопкой мыши по созданной группировке, выберем пункт Установить имя... и укажем понятное имя, например, ПодвалГруппировки.
  3. Выделим группировку ПодвалГруппировки и настроим ее параметры:
    1. На вкладке Выбранные поля снимем флаг Авто и оставим список полей полностью пустым.
    2. На вкладке Другие настройки установим свойство Макет оформления в значение Без оформления, чтобы отключить системные границы и заливку ячеек.
  4. Перейдем на вкладку Макеты схемы компоновки данных. Нажмем Добавить макет группировки, в поле Имя группировки укажем ПодвалГруппировки, а в поле Тип макета выберем Заголовок.
  5. В табличной области макета нарисуем блок подписей: объединим нужные ячейки по горизонтали, укажем должности, подчеркивания для подписи и параметры для вывода ФИО ответственных лиц.

Способ 2. Использование макета с типом «Подвал» для существующей группировки

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

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

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

Способ 3. Программный вывод подвала при компоновке результата

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

Посмотрим на пример кода в обработчике события ПриКомпоновкеРезультата:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	// Инициализируем схему и настройки компоновщика
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
	
	ДокументРезультат.Очистить();
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	
	// Выводим результат компоновки
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
	// Получаем пользовательский макет с подписями из объекта отчета
	МакетОтчета = ПолучитьМакет("МакетПодписей");
	ОбластьПодвала = МакетОтчета.ПолучитьОбласть("Подвал");
	
	// Заполняем параметры области
	ОбластьПодвала.Параметры.Ответственный = "Иванов И.И.";
	
	// Проверяем возможность вывода на текущей странице и выводим
	МассивВывода = Новый Массив;
	МассивВывода.Добавить(ОбластьПодвала);
	
	Если Не ДокументРезультат.ПроверитьВывод(МассивВывода) Тогда
		ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
	КонецЕсли;
	
	ДокументРезультат.Вывести(ОбластьПодвала);
	
КонецПроцедуры

Рекомендации по оформлению блока подписей

При выводе подписантов важно учитывать особенности поведения табличного документа 1С:

  1. Сетка колонок отчета: пользовательские макеты СКД делят общую сетку колонок с табличной частью. Чтобы подпись не растягивалась и не сжималась при изменении ширины колонок отчета, ячейки подписи следует объединять по горизонтали на всю ширину предполагаемой таблицы.
  2. Контроль разрыва страниц при печати: чтобы подпись руководителя не отрывалась от итоговых сумм и не переносилась в одиночку на следующий лист, выделите строки макета с подвалом и в свойствах ячеек установите флаг Вместе со следующим, либо используйте метод ПроверитьВывод() при программной компоновке.
← На главную