Как в СКД вывести ресурсы в строки при группировке по месяцам и настроить отображение данных без лишних итогов

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

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

Анализ исходных данных и запроса

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


ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(CRM_Сделка.Дата, МЕСЯЦ) КАК Месяц,
    СУММА(CRM_Сделка.СуммаПотенциал) КАК СуммаСделки
ИЗ
    Документ.CRM_Сделка КАК CRM_Сделка
ГДЕ
    CRM_Сделка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
    НАЧАЛОПЕРИОДА(CRM_Сделка.Дата, МЕСЯЦ)
УПОРЯДОЧИТЬ ПО
    Месяц

Здесь мы используем функцию НАЧАЛОПЕРИОДА для формирования временных интервалов. На уровне ресурсов СКД мы должны добавить поле СуммаСделки с функцией Сумма(СуммаСделки).

Способ 1: Использование вычисляемых полей для имитации заголовка строки

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

  1. Перейдем на закладку Вычисляемые поля.
  2. Добавим новое поле с именем ЗаголовокРесурса.
  3. В поле Выражение впишем строковое значение в кавычках: "Сумма сделки".
  4. На закладке Настройки в структуре отчета создадим таблицу.
  5. В Строки добавим группировку по нашему вычисляемому полю ЗаголовокРесурса.
  6. В Колонки добавим группировку по полю Месяц.

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

Способ 2: Настройка расположения ресурсов

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

Чтобы добиться желаемого результата, выделим в структуре настроек конкретную группировку (строку) и установим для нее Расположение ресурсов в значение Вертикально. Это заставит СКД перечислить ресурсы внутри строки под названием группировки.

Работа с итогами и решение проблемы исчезновения данных

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

Чтобы убрать только финальную колонку "Итого" справа и нижнюю строку "Итого", выполним следующие шаги в Других настройках:

  1. Найдем параметр Расположение общих итогов по горизонтали и установим значение Нет.
  2. Найдем параметр Расположение общих итогов по вертикали и установим значение Нет.

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

Тонкая настройка: Использование пустых колонок и скрытие заголовков

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

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

Дополнение периодов (заполнение пустых месяцев)

Проанализируем ситуацию: если в феврале не было сделок, колонка "Февраль" может просто исчезнуть из отчета. Чтобы сетка месяцев была непрерывной, настроим роль поля Месяц:

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

Теперь даже при отсутствии движений в базе, отчет будет выводить полную календарную шкалу, что придает ему профессиональный вид макетного отчета.

Использование макетов для полной кастомизации

Если стандартные средства не позволяют добиться идеального сходства с требуемым эскизом, разберем вариант с использованием Макетов. В СКД можно создать Макет заголовка группировки. Это позволяет:

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

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

← На главную