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