При разработке отчетов в системе компоновки данных (СКД) часто возникает задача распределения числовых показателей (например, количества или суммы проданных товаров) по различным колонкам в зависимости от того, к какому набору или категории относятся характеристики номенклатуры. Рассмотрим, как правильно реализовать такую логику, какие механизмы платформы 1С для этого подходят и как избежать типовых проблем с производительностью и пустыми значениями.
Рассмотрим вариант, когда количество колонок в отчете заранее известно и фиксировано. В этом случае мы можем прямо в запросе набора данных или в вычисляемых полях СКД сформировать отдельные показатели для каждого набора характеристик.
Проанализируем пример логики в тексте запроса. Чтобы перенести вычисления на сторону СУБД и исключить появление пустых ячеек со значением NULL, обернем условия в агрегатную функцию и обработаем функции проверки значений:
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура,
ЕСТЬNULL(СУММА(ВЫБОР
КОГДА Продажи.Характеристика В (&СписокХарактеристик1)
ТОГДА Продажи.Количество
ИНАЧЕ 0
КОНЕЦ), 0) КАК РасходНабор1,
ЕСТЬNULL(СУММА(ВЫБОР
КОГДА Продажи.Характеристика В (&СписокХарактеристик2)
ТОГДА Продажи.Количество
ИНАЧЕ 0
КОНЕЦ), 0) КАК РасходНабор2
ИЗ
РегистрНакопления.Продажи КАК Продажи
СГРУППИРОВАТЬ ПО
Продажи.Номенклатура
Разберем по шагам настройку параметров для данного подхода:
СписокХарактеристик1 и СписокХарактеристик2, указав для них тип значения СправочникСсылка.ХарактеристикиНоменклатуры и установив флаг доступности списка значений.ПриКомпоновкеРезультата.Если состав характеристик динамический или их количество постоянно меняется, прописывать каждую конструкцию ВЫБОР КОГДА вручную неудобно. В таком случае разберем построение отчета через структуру «Таблица».
Построим отчет, где в строках выводится номенклатура, а в колонках — категория или группа характеристик:
Номенклатура.ГруппаХарактеристик).СУММА(Расход) для поля Расход.При таком подходе СКД автоматически сформирует ровно столько столбцов, сколько уникальных групп характеристик найдено в текущей выборке данных.
Выясним, как задействовать штатный механизм работы с дополнительными реквизитами и сведениями. Если характеристики хранятся в стандартных планах видов характеристик, задействуем вкладку Характеристики в наборе данных СКД.
Рассмотрим порядок действий:
Справочник.Номенклатура), источник видов характеристик и источник значений.Таким образом, мы проанализировали основные способы разделения характеристик по столбцам в СКД — от жестко заданных условных выражений в запросе до динамических кросс-таблиц и пользовательских полей.