Как реализовать сложные группировки в колонках СКД 1С 8.3

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

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

Способ 1. Использование структуры «Таблица» для динамических колонок

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

  1. Перейдем на закладку «Настройки» в схеме компоновки данных.
  2. В дереве настроек нажмем правой кнопкой мыши на корневой элемент и выберем «Новая таблица».
  3. В появившейся структуре у нас будет два раздела: Строки и Колонки.
  4. В раздел Строки добавим те поля, которые должны идти вертикально (например, Подразделение или ФизЛицо).
  5. В раздел Колонки добавим поле, значения которого должны стать шапкой. В нашем примере это может быть ФормаОбучения или УровеньПодготовки.
  6. На закладке «Выбранные поля» для всей таблицы укажем ресурсы, которые должны выводиться на пересечении строк и колонок (например, КоличествоСтудентов).

Выясним причину, почему это работает: СКД автоматически анализирует все имеющиеся данные и для каждого уникального значения в поле группировки колонок создает отдельный столбец. Если данных по конкретной форме обучения нет, колонка просто не будет выведена (если не настроено иное).

Способ 2. Создание фиксированных групп в «Выбранных полях»

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

Допустим, нам нужно вывести общую группу «Успеваемость», внутри которой будут колонки «Средний балл» и «Количество пропусков». Разберем по шагам процесс настройки:

  1. Зайдем в настройки отчета на закладку «Выбранные поля».
  2. Нажмем правой кнопкой мыши в списке полей и выберем команду «Новая группа выбранных полей».
  3. В поле Заголовок введем текст, который будет отображаться в «верхней» части шапки.
  4. В поле Расположение выберем значение Горизонтально (это критически важно для создания иерархии).
  5. Перетащим нужные поля или ресурсы внутрь созданной группы.

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

Способ 3. Вычисляемые поля и условное распределение данных

Иногда требуется более сложная логика, когда данные в колонки должны попадать не просто по значению поля, а по определенному условию. В этом случае нам помогут Вычисляемые поля. Рассмотрим подробнее, как это реализовать с помощью кода 1С в СКД:

Предположим, нам нужно вывести колонку, которая суммирует показатели только для студентов определенных курсов. Мы можем создать вычисляемое поле с выражением:


Выбор 
    Когда Курс В (1, 2) Тогда "Младшие курсы" 
    Когда Курс В (3, 4, 5) Тогда "Старшие курсы" 
Конец

После создания такого поля мы можем использовать его в группировке колонок таблицы, как было описано в первом способе. СКД сгруппирует данные согласно нашему условию ВЫБОР.

Настройка отображения итогов

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

Работа с макетами оформления для «красивых» отчетов

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

  1. Перейдем на закладку «Макеты».
  2. Нажмем «Добавить макет группировки» или «Добавить макет заголовка группировки».
  3. Укажем имя группировки (например, наше поле ФормаОбучения).
  4. В табличном документе отрисуем нужную область: зададим цвета, границы, шрифты и объединим ячейки.
  5. В ячейках, где должен выводиться текст заголовка, укажем Параметр и свяжем его с полем СКД.

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

В заключение отметим, что для глубокого понимания работы с группировками рекомендуется изучать специализированную литературу, например, работы Е. Хрусталевой по СКД. Это база, которая позволяет решать 90% задач по проектированию сложных отчетов без написания избыточного кода в модулях объектов.

← На главную