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