Сложный расчет итогов СКД

В некоторых случаях требуется по разному рассчитывать итоги на разных уровнях группировок. Например: по самой вложенной группировке нужно использовать агрегатную функцию МАКСИМУМ, а по вышестоящей использовать агрегатную функцию СУММА. Иными словами, нужно суммировать максимумы внутренних группировок во внешних.

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

ВычислитьВыражениеСГруппировкойМассив

(EvalExpressionWithGroupArray)
Синтаксис:

ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)

Параметры:

Выражение — выражение, которое нужно вычислить. Тип Строка. Например, «Сумма(СуммаОборот)«;
ВыраженияПолейГруппировки — выражения полей группировки, перечисленные через запятую. Например, «Контрагент, Партия»;
ОтборЗаписей — выражение, применяемое к детальным записям. Например, «ПометкаУдаления = Ложь«. Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
ОтборГруппировок — отбор, применяемый к групповым записям. Например: «Сумма(СуммаОборот) > &Параметр1«.
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.

Для получения результата как в примере используем следующее выражение:
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СтоимостьРаботы)","ЗаказСсылка"))
Пример настройки ресурса.