Как в СКД отключить вывод ресурса для определенных группировок

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

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

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

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

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

Способ 1. Индивидуальная настройка выбранных полей группировок

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

Разберем процесс по шагам:

  1. Перейдем на вкладку Настройки в схеме компоновки данных.
  2. Выделим родительскую группировку (например, Номенклатура), откроем вкладку Выбранные поля и убедимся, что там выбраны все необходимые поля (Количество, Цена).
  3. Выделим подчиненную группировку (например, Заказ) и перейдем на ее вкладку Выбранные поля.
  4. Удалим системный элемент Авто, чтобы прервать автоматическое наследование полей от родителя.
  5. Вручную добавим в список выбранных полей подчиненной группировки только те показатели, которые должны в ней отображаться (например, поле Количество).

После этой настройки вложенные строки по заказам не будут содержать колонку цены, а в строке номенклатуры отобразятся оба показателя.

Способ 2. Раздельный расчет ресурса с использованием пустых значений

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

Рассмотрим порядок настройки:

  1. Откроем вкладку Ресурсы в схеме СКД.
  2. Добавим ресурс Цена для общего уровня и родительской группировки Номенклатура с агрегатным выражением, например Максимум(Цена) или Среднее(Цена).
  3. Добавим ресурс Цена второй строкой, указав в поле Выражение значение NULL или 0, а в колонке Рассчитывать по... выберем группировку Заказ.
  4. Для корректного отображения пустого поля перейдем в свойства поля на вкладке Наборы данных и в параметре Оформление зададим форматную строку с параметром представления нулевых или пустых значений, например: ЧН=; ЧО=.

Посмотрим на пример расчета средневзвешенной цены в ресурсах, если требуется точный математический расчет по сумме и количеству на верхнем уровне:


Выбор 
    Когда Сумма(Количество) = 0 Тогда 0 
    Иначе Сумма(Сумма) / Сумма(Количество) 
Конец

Такое выражение гарантирует корректный расчет цены для вышестоящей группировки Номенклатура и общих итогов отчета.

Способ 3. Скрытие значений через условное оформление

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

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

  1. В настройках отчета выделим подчиненную группировку (Заказ) и перейдем на вкладку Условное оформление.
  2. Добавим новый элемент оформления.
  3. В списке Оформляемые поля выберем ресурс Цена.
  4. На вкладке Оформление установим флаг для параметра Текст и оставим значение пустым.

В результате СКД сохранит целостность таблицы отчета, но визуально скроет значения ресурса Цена для всех строк уровня Заказ.

← На главную