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