Имя: Пароль:
1C
1С v8
СКД: Как обратиться к итогу по группировке?
0 sdemon72
 
27.01.23
18:53
Добрый вечер!
Пишу отчет на скд, нужно в определенной группировке вывести результат операции (скажем, деления) двух ресурсов, каждый из которых вычисляется по сложгой формуле.
Ресурс1:
Выбор
Когда СпособАгрегации = &СпособСреднее Тогда Среднее(Значение)
Когда СпособАгрегации = &СпособСумма Тогда Сумма(Значение)
Когда СпособАгрегации = &СпособМинимум Тогда Минимум(Значение)
Когда СпособАгрегации = &СпособМаксимум Тогда Максимум(Значение)
Конец
Ресурс2:
Максимум(ВесовойКоэффициент)
И теперь надо сделать Ресурс3 = Ресурс1/Ресурс2.
Как то можно сделать так, чтоб не лепить многоэтажку аля:
Выбор
Когда СпособАгрегации = &СпособСреднее Тогда Среднее(Значение)
Когда СпособАгрегации = &СпособСумма Тогда Сумма(Значение)
Когда СпособАгрегации = &СпособМинимум Тогда Минимум(Значение)
Когда СпособАгрегации = &СпособМаксимум Тогда Максимум(Значение)
Конец/Максимум(ВесовойКоэффициент)
А просто сослаться на имена ресурсов?
Все это в пределах одной группировки.
Ну а потом еще в общем итоге просуммировать это все
1 Мультук
 
гуру
27.01.23
19:22
(0)
Моё ИМХО - никак

Я в этом случае:

1) Редактирую всё это во внешнем редакторе с подсветкой
2) Пишу
Ресурс1 * Ресурс2 / Ресурс3

а потом делаю заменить. Семиэтажный результат copy/paste в выражение ресурса.
2 sdemon72
 
27.01.23
19:25
Эхх.. Попробую через "Вычислить выражение" - может получится лаконичней...
3 Donkey_hot
 
27.01.23
20:01
(2) Можно при помощи вычисляемого поля, использующего функцию общего модуля.
4 Сергиус
 
27.01.23
20:08
(0)Делаешь конструкцию из серии () / (), и внутрь каждой вставляешь)
5 sdemon72
 
27.01.23
20:22
С вычисляемым полем вроде ничо так.
Вычисляемое поле (ЗначениеПоказатель):
ВычислитьВыражение("Выбор
    Когда СпособАгрегации = &СпособСреднее Тогда Среднее(Значение)
    Когда СпособАгрегации = &СпособСумма Тогда Сумма(Значение)
    Когда СпособАгрегации = &СпособМинимум Тогда Минимум(Значение)
    Когда СпособАгрегации = &СпособМаксимум Тогда Максимум(Значение)
Конец", "Показатель")
Ресурс:
Выбор
Когда Максимум(ЗначениеПоказатель)/Максимум(ЦелевоеЗначение) < Максимум(МинимальныйПорог)
Тогда 0
Когда Максимум(ЗначениеПоказатель)/Максимум(ЦелевоеЗначение) > Максимум(МаксимальныйПорог)
Тогда Максимум(МаксимальныйПорог)
Иначе Максимум(ЗначениеПоказатель)/Максимум(ЦелевоеЗначение) Конец
*Максимум(ВесовойКоэффициент)
6 sdemon72
 
27.01.23
20:26
Только теперь по более верхней группировке надо просуммировать это. Через ВычислитьВыражениеСГруппировкойМассив вроде, но что-то не выходит...
7 sdemon72
 
27.01.23
21:02
Короче вернулся к "Многоэтажке", иначе не работала ВычислитьВыражениеСГруппировкойМассив, не могу сказать, почему
8 sdemon72
 
27.01.23
21:03
Напугайтесь :)

Сумма(ВычислитьВыражениеСГруппировкойМассив("
Выбор
Когда Выбор
Когда Максимум(СпособАгрегации) = &СпособСреднее
Тогда Среднее(Значение)
Когда Максимум(СпособАгрегации) = &СпособСумма
Тогда Сумма(Значение)
Когда Максимум(СпособАгрегации) = &СпособМинимум
Тогда Минимум(Значение)
Когда Максимум(СпособАгрегации) = &СпособМаксимум
Тогда Максимум(Значение)
Конец/Максимум(ЦелевоеЗначение) < Максимум(МинимальныйПорог)
Тогда 0
Когда Выбор
Когда Максимум(СпособАгрегации) = &СпособСреднее
Тогда Среднее(Значение)
Когда Максимум(СпособАгрегации) = &СпособСумма
Тогда Сумма(Значение)
Когда Максимум(СпособАгрегации) = &СпособМинимум
Тогда Минимум(Значение)
Когда Максимум(СпособАгрегации) = &СпособМаксимум
Тогда Максимум(Значение)
Конец/Максимум(ЦелевоеЗначение) > Максимум(МаксимальныйПорог)
Тогда Максимум(МаксимальныйПорог)
Иначе Выбор
Когда Максимум(СпособАгрегации) = &СпособСреднее
Тогда Среднее(Значение)
Когда Максимум(СпособАгрегации) = &СпособСумма
Тогда Сумма(Значение)
Когда Максимум(СпособАгрегации) = &СпособМинимум
Тогда Минимум(Значение)
Когда Максимум(СпособАгрегации) = &СпособМаксимум
Тогда Максимум(Значение)
Конец/Максимум(ЦелевоеЗначение) Конец
*Максимум(ВесовойКоэффициент)
", "Показатель"))