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