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