Как в отчете-таблице СКД вывести ресурс или вычисляемое поле только в отдельной конечной колонке?

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

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

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

Почему ресурс выводится в каждой колонке группировки?

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

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

Способ 1. Разделение колонок в структуре отчета (Рекомендуемый)

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

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

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

Способ 2. Ограничение расчета на вкладке «Ресурсы»

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

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

  1. Перейдем на вкладку Ресурсы схемы компоновки.
  2. Найдем поле СредПродажа.
  3. В колонке Рассчитывать по... укажем только группировки строк (например, Номенклатура, ТорговаяТочка) и ОбщийИтог.
  4. Поле группировки колонок Мес включать в этот список не нужно.

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

Нюансы вычисления средней продажи в СКД

Посмотрим на формулу, которую часто используют в запросе или вычисляемых полях:


СредПродажа = ОбщКол / (РазностьДат(КонецПериода(&НачалоПериода, "Месяц"), &КонецПериода, "Месяц"))

При таком расчете важно учитывать два момента:

  1. Особенности функции РазностьДат: при подсчете разницы между началом года и серединой года функция считает количество границ интервалов. Например, разность между 01.01 и 30.06 вернет 5, а не 6 месяцев. Для корректного деления на количество месяцев периода формулу корректируют с добавлением единицы: РазностьДат(&НачалоПериода, &КонецПериода, "Месяц") + 1.
  2. Использование агрегатных функций СКД: на вкладке Ресурсы среднее значение по фактически присутствующим данным можно вычислять с помощью штатного агрегатного выражения: Сумма(КоличествоОборот) / Количество(Различные Мес) или стандартной функции Среднее(КоличествоОборот), если каждая запись представляет собой отдельный месяц.

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

← На главную