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

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

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

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

Причина возникновения проблемы

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

Решение через нормализацию структуры запроса

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

Рассмотрим, как это сделать по шагам:

  1. Пересмотр структуры данных: Вместо того чтобы выбирать показатели как отдельные поля (ресурсы) в СКД, перенесите логику в запрос к источнику данных.
  2. Создание «плоской» таблицы: Сформируйте запрос таким образом, чтобы он возвращал четыре ключевых уровня данных: Организация, ГруппаПоказателей, НазваниеПоказателя и ЗначениеПоказателя.
  3. Группировка в настройках: Теперь, когда данные стали плоскими, в настройках отчета вы можете использовать обычную иерархическую группировку: Организация -> ГруппаПоказателей -> НазваниеПоказателя.

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

Пример реализации

Вместо использования нескольких полей ресурсов, приведите данные к такому виду:


ВЫБРАТЬ
    Данные.Организация КАК Организация,
    Данные.ГруппаПоказателей КАК ГруппаПоказателей,
    Данные.НазваниеПоказателя КАК НазваниеПоказателя,
    СУММА(Данные.Значение) КАК ЗначениеПоказателя
ИЗ
    ТаблицаДанных КАК Данные
СГРУППИРОВАТЬ ПО
    Данные.Организация,
    Данные.ГруппаПоказателей,
    Данные.НазваниеПоказателя

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

Альтернативные методы

Если по каким-то причинам изменение структуры запроса невозможно, существуют более сложные подходы, однако они требуют больших трудозатрат:

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

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

← На главную