Как реализовать сворачиваемые группировки колонок по ресурсам в отчете на СКД

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

При разработке сложных аналитических отчетов в системе компоновки данных (СКД) часто возникает задача визуального объединения нескольких ресурсов под общей «шапкой». Пользователи привыкли к удобству Excel, где группы колонок можно сворачивать и разворачивать нажатием на кнопку «+/-». В стандартном функционале СКД группировка колонок по умолчанию не всегда ведет себя так, как группировка строк. Разберем подробно, как добиться эффекта сворачивания ресурсов, используя различные механизмы платформы.

Метод 1. Создание иерархии через фиктивные вычисляемые поля

Проанализируем самый надежный способ заставить СКД рисовать кнопки группировки для колонок. Проблема заключается в том, что ресурсы сами по себе не образуют иерархию, которую табличный документ мог бы свернуть. Чтобы создать такую связь, нам нужно добавить «родительский» элемент. Выясним, как это сделать по шагам:

  1. Перейдем на закладку «Вычисляемые поля» в схеме компоновки данных.
  2. Добавим новое поле, например, с заголовком ГруппаПоказателей. В выражении укажем строковую константу, которая будет служить названием нашей группы: "Продажи (детально)".
  3. В настройках отчета, в структуре «Таблица», добавим это поле в Группировки колонок.
  4. Внутрь этой группировки (как вложенный элемент) мы можем добавить либо другие измерения, либо оставить детальные записи, в которых и будут выводиться наши ресурсы.

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

Метод 2. Использование пользовательских полей типа «Выбор»

Рассмотрим ситуацию, когда нам нужно сгруппировать ресурсы динамически или без изменения основной схемы. Для этого отлично подходят Пользовательские поля. Посмотрим на алгоритм настройки:

  1. В режиме «1С:Предприятие» или в конфигураторе на закладке настройки «Пользовательские поля» создадим новое поле типа «Поле-выбор».
  2. В качестве условия можно указать произвольное выражение, которое всегда истинно (например, Истина = Истина), и задать заголовок для этого варианта.
  3. Добавим это пользовательское поле в группировку колонок таблицы.

Это решение часто дополняют использованием пустого пользовательского поля, как упоминалось в обсуждении. Если создать пустое поле и сделать его родителем для ресурсов, система отрисует дополнительный уровень вложенности, что активирует механизм группировки колонок в результирующей таблице.

Метод 3. Группировка выбранных полей и настройка расположения ресурсов

Иногда требуется просто визуальное объединение ресурсов под одним заголовком без необходимости обязательного «физического» сворачивания, либо как дополнение к вышеописанным методам. Разберем настройку папок в выбранных полях:

В настройках отчета (вкладка «Выбранные поля») мы можем создать группу полей (правой кнопкой мыши — «Сгруппировать поля»). Для корректного отображения важно настроить свойства группы:

Однако, чтобы это работало корректно в кросс-таблицах, проанализируем параметр в «Прочих настройках» — «Расположение ресурсов». Если установить значение Вертикально, ресурсы будут выводиться друг под другом в одной колонке, что уберет возможность их независимого сворачивания. Для нашей задачи лучше использовать Горизонтально или Авто. Для вывода ресурса только в одной колонке таблицы можно использовать способ вывода ресурса в произвольной колонке через настройки СКД.

Метод 4. Тонкая настройка «Расположения группировок»

Выясним причину, по которой группировки иногда отображаются, но не сворачиваются. В СКД есть критически важный параметр в «Прочих настройках» — «Расположение группировок колонок». Посмотрим на доступные варианты:

Чтобы предоставить пользователю возможность управления видимостью колонок, убедитесь, что этот параметр установлен в значение Начало или Конец. Это заставит платформу принудительно расставить уровни группировок в табличном документе.

Метод 5. Программное управление структурой колонок

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


// После вывода результата в ТабличныйДокумент
ТабличныйДокумент.ПоказатьУровеньГруппировокКолонок(1);

// Или ручная группировка конкретной области
ОбластьКолонок = ТабличныйДокумент.Область(, НачальнаяКолонка, , КонечнаяКолонка);
ОбластьКолонок.Сгруппировать();

Использование метода ПоказатьУровеньГруппировокКолонок() позволяет программно задать состояние отчета «по умолчанию» при открытии, чтобы пользователь сразу видел свернутую аналитику. Проанализируем ситуацию: если ваша таблица имеет статичную структуру ресурсов, вы можете один раз определить номера колонок и сгруппировать их методом Сгруппировать(), что обеспечит максимальную гибкость интерфейса.

Особенности для Кросс-таблиц

В сложных кросс-отчетах, где ресурсы могут пересекаться с измерениями по горизонтали, важно помнить: сворачивание ресурсов работает только тогда, когда ресурсы расположены в отдельных колонках. Если в настройках указано Расположение ресурсов = В одной колонке, то все числовые показатели «склеятся» в одну ячейку текстовым блоком, и свернуть их по отдельности будет технически невозможно.

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

← На главную