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