При разработке отчетов в системе компоновки данных (СКД) часто возникает задача изменить стандартную ориентацию вывода: расположить периоды или другие измерения по горизонтали (в колонках), а числовые показатели (ресурсы) — по вертикали (в строках). Если в исходном наборе данных показатели представлены отдельными числовыми полями (например, Показатель1, Показатель2), стандартная группировка в виде таблицы может формировать лишние пустые строки или выводить ресурсы в заголовках колонок. Разберем способы правильной настройки схемы компоновки данных для решения этой задачи.
Рассмотрим наиболее удобный и быстрый способ в СКД, который не требует изменения текста запроса. В настройках отчета используется вариант вывода Таблица в сочетании со специальным элементом структуры Дополнительная информация.
Разберем по шагам настройку структуры отчета:
Период (или любому другому измерению, которое должно идти по горизонтали).Показатель1, Показатель2 и т.д.Проанализируем механику работы этого элемента: Дополнительная информация указывает компоновщику макета, что выбранные поля должны быть выведены друг под другом непосредственно в строках таблицы на пересечении с колонками группировки, без создания пустых строк заголовков и промежуточных группировочных итогов.
Если требуется выводить показатели с дополнительной динамической фильтрацией или если структура колонок должна определяться значениями из справочника, разберем подход с преобразованием структуры данных в самом тексте запроса. Преобразуем плоскую таблицу с колонками показателей в вертикальную структуру: Период, ИмяПоказателя, ЗначениеПоказателя.
Посмотрим на пример запроса с объединением:
ВЫБРАТЬ
Продажи.Период КАК Период,
"Выручка" КАК ИмяПоказателя,
Продажи.СуммаВыручки КАК ЗначениеПоказателя
ИЗ
РегистрНакопления.Продажи КАК Продажи
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Продажи.Период КАК Период,
"Количество" КАК ИмяПоказателя,
Продажи.Количество КАК ЗначениеПоказателя
ИЗ
РегистрНакопления.Продажи КАК Продажи
После формирования такого набора данных настроим СКД следующим образом:
ЗначениеПоказателя с выражением Сумма(ЗначениеПоказателя).ИмяПоказателя.Период.ЗначениеПоказателя.Этот вариант удобен тем, что строки таблицы формируются динамически на основе значений поля ИмяПоказателя, однако при разных типах расчета итогов для каждого показателя (например, для одного требуется сумма, а для другого — среднее) потребуется прописывать условные выражения на вкладке Ресурсы.
Если типовые структуры таблиц не позволяют добиться требуемого визуального оформления, рассмотрим вариант с использованием вкладки Макеты схемы компоновки данных. Этот способ позволяет жестко зафиксировать расположение каждой ячейки.
Разберем алгоритм настройки:
Заполнение = Параметр или Заполнение = Шаблон и свяжем их с полями набора данных.Использование пользовательского макета дает полный контроль над результирующим табличным документом, сохраняя при этом автоматический расчет итогов СКД.