Как в СКД транспонировать отчет и вывести ресурсы в строки, а периоды в колонки?

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

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

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

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

Разберем по шагам настройку структуры отчета:

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

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

Способ 2. Транспонирование данных на уровне запроса (Unpivot)

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

Посмотрим на пример запроса с объединением:


ВЫБРАТЬ
    Продажи.Период КАК Период,
    "Выручка" КАК ИмяПоказателя,
    Продажи.СуммаВыручки КАК ЗначениеПоказателя
ИЗ
    РегистрНакопления.Продажи КАК Продажи

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Продажи.Период КАК Период,
    "Количество" КАК ИмяПоказателя,
    Продажи.Количество КАК ЗначениеПоказателя
ИЗ
    РегистрНакопления.Продажи КАК Продажи

После формирования такого набора данных настроим СКД следующим образом:

  1. На вкладке Ресурсы добавим поле ЗначениеПоказателя с выражением Сумма(ЗначениеПоказателя).
  2. В настройках структуры отчета создадим Таблицу.
  3. В Строки таблицы добавим группировку по полю ИмяПоказателя.
  4. В Колонки таблицы добавим группировку по полю Период.
  5. В Выбранные поля таблицы поместим ресурс ЗначениеПоказателя.

Этот вариант удобен тем, что строки таблицы формируются динамически на основе значений поля ИмяПоказателя, однако при разных типах расчета итогов для каждого показателя (например, для одного требуется сумма, а для другого — среднее) потребуется прописывать условные выражения на вкладке Ресурсы.

Способ 3. Применение пользовательских макетов СКД

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

Разберем алгоритм настройки:

  1. На вкладке Макеты нажмем Добавить макет группировки.
  2. Выберем группировку строк или колонок, для которой настраивается индивидуальное отображение.
  3. В редакторе табличного документа нарисуем необходимый макет ячеек, зададим параметры Заполнение = Параметр или Заполнение = Шаблон и свяжем их с полями набора данных.
  4. Сконфигурируем границы ячеек, цвет фона и выравнивание текста.

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

← На главную