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