Добрый день! Платформа 8.2.19.130, УПП 1.3.110.1
Делаю отчет на СКД по взаиморасчетам.
Упрощенно - берутся данные проводок , с детализацией по регистратору. В договоре контрагента есть добавленный реквизит "Плановая сумма", и эту плановую сумму на уровне детальных записей складывать не нужно, а на уровне группировки по договору - выводить "как есть", а на уровне группировке выше (по иерархии договоров и контрагенту) - суммировать.
На закладке "Ресурсы" использую выражение
Минимум(ДоговорКонтрагента_СуммаБезНДС) - на уровне группировки по договору
Сумма(ВЫЧИСЛИТЬВыражениесгруппировкоймассив("Минимум(ДоговорКонтрагента_СуммаБезНДС)", "ДоговорКонтрагента")) - на уровне иерархии договора, контрагента и общих итогах. См. рисунок1.
Все работает нормально, кроме одного НО: в группировке по иерархии договора выводится первая агрегатная функция (минимум), не суммируется. В группировке по контрагенту, в общих итогах - все правильно работает ,а вот группировку по иерархии договора - никак не домучаю. Максимум, среднее - не помогли, вычисляется максимум и среднее на иерархии, никак не сумма.
Может быть есть какие-то идеи, поисковик про ВЫЧИСЛИТЬВыражениесгруппировкоймассив помог найти, а вот с нюансами работы по иерархии этой функции - не нашла ничего.
---
в запросе нужно вывести дополнительно поле договора, например: "ДоговорДляРасчета" и переделить выражение на
Сумма(ВЫЧИСЛИТЬВыражениесгруппировкоймассив("Минимум(ДоговорКонтрагента_СуммаБезНДС)", "ДоговорДляРасчета"))

данное поведение СКД связано с тем, что при расчете группировки по иерархии, все значения поля подменяются на значение родителя
---
ВычислитьВыражение("Сумма(Показатель)","Договор",,"Первая","Последняя")

это выражение можно разместить в вычисляемых полях, а уже само вычисляемое поле использовать в ресурсах со своими агрегатами. Можно сразу это выражение в ресурс, но

"Сумма(Показатель)" - замените на свое выражение с Минимум или без зависит от контекста. Если в выражении будут вложенные агрегаты, то заключайте их во вложенные кавычки.

истина где-то тут ^
---
да тоже пыталась с "ВычислитьВыражение" всячески.
На уровне группировки по иерархии договора суммирует детальные записи. На группировке по контрагенту, на общих итогах - все правильно, а группировка по иерархии -нет.

Как пыталась: в ресурсах были испробованы для уровня иерархии следующие конструкции:
Сумма (ВычислитьВыражение("Минимум(ДоговорКонтрагента_СуммаБезНДС)","ДоговорКонтрагента", ,"Первая","Последняя") )
Сумма (ВычислитьВыражение("Минимум(ДоговорКонтрагента_СуммаБезНДС)","ДоговорКонтрагента", "ГруппировкаНеРесурса","Первая","Последняя") )
Сумма (ВычислитьВыражение("Минимум(ДоговорКонтрагента_СуммаБезНДС)","ДоговорКонтрагента", "Группировка","Первая","Последняя") )
Сумма (ВычислитьВыражение("Минимум(ДоговорКонтрагента_СуммаБезНДС)","ДоговорКонтрагента", "Иерархия","Первая","Последняя") )
Сумма (ВычислитьВыражение("Минимум(ДоговорКонтрагента_СуммаБезНДС)","ДоговорКонтрагента", ,"Первая","Первая") )
Через вычисляемые поля тоже это все попробовала, не получилось.

Учитывая то, что про функцию ВычислитьВыражение в интернетах написано, что что-то там не учитывается про иерархические отборы, то может вообще оно с иерархией не работает

ВычислитьВыражение (EvalExpression) - предназначена для вычисления выражения в контексте некоторой группировки. Функция учитывает отбор группировок, но не учитывает иерархические отборы. Функция не может применяться к группировке в групповом отборе этой группировки.
---
Тогда попробуйте вложенные агрегаты(кавычки внутри вложенности должны быть двойными), например

Сумма(ВычислитьВыражение("Сумма(ВычислитьВыражениеСГруппировкойМассив(""Минимум(ДоговорКонтрагента_СуммаБезНДС)"", ""ДоговорКонтрагента""))"))

- В примере выражения может поменять местами, т.е. Минимум первое, Сумма второе и т.п.
---
и это не помогло.
Вот пример отчета для типового УПП. (у меня нет демо базы под рукой, но предполагаю, что должно работать, задействовала только типовые реквизиты).
Берем обороты счета 62.01, выводим эти обороты до регистратора, и пытаемся просуммировать реквизит "Допустимая сумма задолженности". Если сделать задолженность по разным договорам, поместить их в одну группу, то на уровне этой группы - берет минимум. Для контрагента, общих итогов - все хорошо.
---
и как успехи ?
---
в запросе нужно вывести дополнительно поле договора, например: "ДоговорДляРасчета" и переделить выражение на
Сумма(ВЫЧИСЛИТЬВыражениесгруппировкоймассив("Минимум(ДоговорКонтрагента_СуммаБезНДС)", "ДоговорДляРасчета"))

данное поведение СКД связано с тем, что при расчете группировки по иерархии, все значения поля подменяются на значение родителя
---
Спасибо, помогло.
Добавила новое поле в отчет, и рассчитываю итог иерархии по нему. Все заработало! Ох уж эта коварная иерархия!
---
другой способ который можно попробовать:
добавить еще один набор, где обращаться к справочнику "Договоры контрагентов", вытаскивая из него:
 - Ссылку
 - и поле с суммой
в условиях запроса поставить отбор "Ссылка В (&ДоговорыДляСвязи)"

после чего настроить связь основного набора и добавленного по полю договора, не забыв указать Параметр ( - &ДоговорыДляСвязи) и установить галочку "Список параметров"

в результате, ресурс можно будет рассчитывать как Сумма(%ПолеИзДоговора%)

Правда я это вариант не использовал для вывода в иерархии