Как в СКД расположить ресурсы в таблице в виде сетки или матрицы?

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

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

Почему не работают стандартные папки в выбранных полях

Проанализируем типовую попытку решения через объединение полей в папки на вкладке «Настройки». Параметры «Расположение ресурсов» (варианты: Горизонтально, Вертикально, В отдельной колонке) применяются глобально ко всей коллекции полей группировки или таблицы. Создание вложенных папок позволяет лишь сгруппировать поля под общими заголовками, но не переносит часть показателей на новую строку внутри единой ячейки пересечения строк и колонок таблицы. Все поля всё равно выстраиваются либо в одну сплошную строку, либо в одну колонку.

Основное решение: использование макета ресурсов

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

Разберем пошаговый порядок настройки макета ресурсов:

  1. Перейдем на вкладку Макеты в схеме компоновки данных.
  2. Нажмем кнопку Добавить макет и выберем пункт Добавить макет ресурсов.
  3. В открывшемся окне укажем группировки, на пересечении которых должен применяться макет. Для таблицы необходимо выбрать:
    • Поле (группировка строк таблицы);
    • Поле по горизонтали (группировка колонок таблицы).
    Если требуется оформить также строки и колонки общих итогов, создадим аналогичные макеты с типом Итог или Общий итог.
  4. В появившемся табличном документе макета выделим прямоугольную область нужного размера (например, блок 3 строки на 3 колонки для размещения 9 ресурсов).
  5. На панели свойств для каждой ячейки внутри созданной сетки установим свойство Заполнение в значение Параметр или Шаблон.
  6. В поле Параметр каждой ячейки укажем понятное имя переменной (например, Показатель1, Показатель2 и так далее).
  7. Для сохранения возможности детализации данных в свойстве ячейки ПараметрРасшифровки пропишем имя параметра расшифровки (например, РасшифровкаПоказатель1).
  8. В нижней таблице «Параметры макета» сопоставим каждому созданному параметру соответствующее выражение схемы компоновки данных — имя ресурса (например, СуммаОборот, КоличествоОборот) или поля группировки. Для параметров расшифровки укажем то же самое поле или служебное выражение расшифровки.

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

Ограничения использования макетов ресурсов

Выясним, какие особенности следует учитывать при выборе этого метода:

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

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

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

  1. В тексте запроса с помощью конструкции ОБЪЕДИНИТЬ ВСЕ преобразуем 9 отдельных полей в строки с полями ИмяПоказателя, ЗначениеПоказателя, а также служебными координатами НомерСтрокиСетки (значения 1, 2, 3) и НомерКолонкиСетки (значения 1, 2, 3).
  2. В настройках СКД внутри ячейки таблицы создадим вложенные группировки строк по полю НомерСтрокиСетки и колонок по полю НомерКолонкиСетки.
  3. В качестве единственного ресурса укажем ЗначениеПоказателя.

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

← На главную