Вложенные агрегатные функции, СКД

1. Mahon83 13 09.01.20 09:51 Сейчас в теме
В отчете необходимо сделать итоговую сумму по группировке "Заказ".

В группировке поступление сумма вычисляется следующим образом
Сумма(КоличествоЕдиницПлан)

В группировке заказ
Максимум(ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ("Сумма(КоличествоЕдиницПлан)", 
"Поступление, Вылюта"))
.

Не могу понять, какое выражение нужно написать, что бы посчиталась сумма по группировке "Заказ", может у кого то есть идеи?

Делаю таким образом, сумма считается не правильно, должно быть 361,060, а получается 360,060
Сумма(ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ("Сумма(СуммаПоПлану)", "Заказ, Номенклатура, Предприятие"))
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
29. dhurricane 09.01.20 21:15 Сейчас в теме
(28) По своему опыту могу сказать, что всякий раз, когда получаются столь зубодробительные выражения ресурсов, то более простым решением будет пересмотреть наборы данных.

Как я понимаю, ключевая проблема здесь в том, что количество по спецификации - это показатель, анализируемый в разрезе Заказа, Номенклатуры и Типа, в то время как количество по поступлениям имеет ту же аналитику, плюс само Поступление. Таким образом имеем два показателя, имеющих разный набор аналитик.

Но СКД этого не понимает. Вы подготовили один набор данных, вероятнее всего запросом, где присутствуют оба показателя, а вместе с ними и вся возможная аналитика. И с этим набором данных СКД работает как с обычной таблицей, в результате чего Количество по спецификации незаслуженно "получила" новый для себя разрез - Поступление. Вот и приходится Вам изголяться с вычисляемыми выражениями и максимумами.

Так вот. Попробуйте исправить наборы данных. Если есть возможность, разбейте исходный на два. Первый только с заказами и количеством по спецификации. Второй - уже с заказами и поступлениями, без количества по спецификации, но с количеством по поступлениям. Свяжите их по совпадающим полям на закладке "Связи наборов данных" СКД.

В этом случае все выражения ресурсов на всех уровнях группировок будут элементарными: "Сумма(КоличествоПо...)". Для двух наборов данных СКД уже прекрасно поймет, где не должно быть дублирования, и не станет, например, несколько раз складывать количество по спецификации для одного и того же заказа, но разных поступлений. Ведь в наборе данных, где присутствует количество по спецификации, поступлений - нет.
28. Mahon83 13 09.01.20 12:59 Сейчас в теме
(16)
Если вдруг интересно, родил такой код, он работает
Сумма(ВычислитьВыражениеСГруппировкойМассив("Среднее(ВычислитьВыражениеСГруппировкойМассив(""Сумма(КоличествоЕдиницПлан)"",""Поступление, Вылюта""))","Заказ"))
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VmvLer 09.01.20 09:59 Сейчас в теме
меня смущает "Максимум"
когда мне станет понятно почему он меня смущает, я думаю, будет ясен ответ.
3. Mahon83 13 09.01.20 10:02 Сейчас в теме
(2) У первого заказа, 2 поступления, количество по спецификации берется из заказа, если я пишу
СУММА(СуммаПоПлану) 
то дублируется
4. Mahon83 13 09.01.20 10:05 Сейчас в теме
(2) Этот скрин наглядее, итоговая сумма должна быть 303
Прикрепленные файлы:
7. VmvLer 09.01.20 10:20 Сейчас в теме
(4) по этому скрину в общем итоге должна быть сейчас сумма максимумов по самой глубокой группировке - "тип".

сегодня утром лидер мнений банка с огурцами и истории "как я это самое", к обеду может исжога сойдет.
13. VmvLer 09.01.20 11:22 Сейчас в теме
(4) и (10) нет противоречий по утверждениям "надо так или эдак"?
в общем случае у вас есть инструменты решения.
правда есть еще один костыль - пользовательские поля
и суперкостыль - использовать условное оформление где в свойстве "текст" вставить ресурс.

вложенные агрегаты и перечисленные костыли позволяют реализовать в СКД любую степень извращений для самых утонченных клиентов - мои вроде не ропчат.

я устал - я ухожу
5. VmvLer 09.01.20 10:16 Сейчас в теме
В выражение вложенный агрегат написать с двойными кавычками
6. Mahon83 13 09.01.20 10:18 Сейчас в теме
8. VmvLer 09.01.20 10:21 Сейчас в теме
(6) пример
Сумма(Вычислить("Сумма(ВычислитьВыражениеСГруппировкойМассив(""Сумма(Показатель)"",""Ссылка""))+1"))
9. Mahon83 13 09.01.20 10:50 Сейчас в теме
(8) Понял о чем Вы, но всё равно не получается написать выражение, которое бы работало у меня
10. Mahon83 13 09.01.20 10:56 Сейчас в теме
(8)
Сумма(Вычислить("Сумма(ВычислитьВыражениеСГруппировкойМассив(""Сумма(Показатель)"",""Ссылка""))+1"))



Вычислить("Сумма(ВычислитьВыражениеСГруппировкойМассив(""Сумма(КоличествоЕдиницПлан)"",""Поступление, Вылюта""))")
Прикрепленные файлы:
11. VmvLer 09.01.20 11:14 Сейчас в теме
(10) Вычислить(" - устаревшее вроде
замените на ВычислитьВыражение("
и если все в порядке, то тут больше нечего пинать.
12. Mahon83 13 09.01.20 11:16 Сейчас в теме
(11)Не, он всё так же дублирует сумму, если у одного заказа есть несколько поступлений
14. VmvLer 09.01.20 11:24 Сейчас в теме
ВычислитьВыражение("Сумма(ВычислитьВыражениеСГруппировкойМассив(""Максимум(КоличествоЕдиницПлан)"",""Поступление, Вылюта""))")
15. vasgius 09.01.20 11:24 Сейчас в теме
из описания не понятно:
- как вы считаете "Общий итог" для ресурса. Так же как для группировки "Заказ"?
- вы указываете разные поля для разных группировок, в двух местах указано поле "КоличествоЕдиницПлан", в другом "СуммаПоПлану", а на скриншотах вы вроде считаете Количество.
17. VmvLer 09.01.20 11:34 Сейчас в теме
(15) в примере из (10) должно быть не 603, а 303

т.е. в верхней группировке необходимо брать максимум, а в нижней сумму.
18. Mahon83 13 09.01.20 11:34 Сейчас в теме
(15)
СуммаПоПлану

СуммаПоПлану косячнул, это другое поле, но суть у него такая же, но опустим его сейчас чтобы не путать.

У меня есть заказ, в котором указано количество для определенной номенклатуры, это и есть колонка количество по спецификациии, она же "КоличествоЕдиницПлан".

Бывает, что в заказе указывается одна и та же номенклатура, но разный тип, на скрине это второй заказ, в таком случае в группировке поступление и заказ это количество нужно суммировать 1+2 = 3

А бывает, что у заказа позиция номенклатуры поставляется двумя приходами, но напротив прихода пишется количество из заказа (на скрине это первый заказ) и поэтому в группировке Заказа сумма не подходит, будет дублироваться итоговое количество.
Прикрепленные файлы:
21. VmvLer 09.01.20 11:41 Сейчас в теме
(18) да с суммой скринить бестолку - только путает.
На количестве понятнее и меньше текста - неокрепшие умы могут забиться в истериках

ну чо (16) работает?
23. Mahon83 13 09.01.20 11:44 Сейчас в теме
24. vasgius 09.01.20 11:48 Сейчас в теме
(18) а как считаете Общий итог? так же как и Заказ?
16. VmvLer 09.01.20 11:32 Сейчас в теме
погадаем еще
ВычислитьВыражение("Сумма(ВычислитьВыражениеСГруппировкойМассив(""Максимум(КоличествоЕдиницПлан)"",""Поступление, Тип, Вылюта""))")
20. Mahon83 13 09.01.20 11:40 Сейчас в теме
22. VmvLer 09.01.20 11:43 Сейчас в теме
28. Mahon83 13 09.01.20 12:59 Сейчас в теме
(16)
Если вдруг интересно, родил такой код, он работает
Сумма(ВычислитьВыражениеСГруппировкойМассив("Среднее(ВычислитьВыражениеСГруппировкойМассив(""Сумма(КоличествоЕдиницПлан)"",""Поступление, Вылюта""))","Заказ"))
29. dhurricane 09.01.20 21:15 Сейчас в теме
(28) По своему опыту могу сказать, что всякий раз, когда получаются столь зубодробительные выражения ресурсов, то более простым решением будет пересмотреть наборы данных.

Как я понимаю, ключевая проблема здесь в том, что количество по спецификации - это показатель, анализируемый в разрезе Заказа, Номенклатуры и Типа, в то время как количество по поступлениям имеет ту же аналитику, плюс само Поступление. Таким образом имеем два показателя, имеющих разный набор аналитик.

Но СКД этого не понимает. Вы подготовили один набор данных, вероятнее всего запросом, где присутствуют оба показателя, а вместе с ними и вся возможная аналитика. И с этим набором данных СКД работает как с обычной таблицей, в результате чего Количество по спецификации незаслуженно "получила" новый для себя разрез - Поступление. Вот и приходится Вам изголяться с вычисляемыми выражениями и максимумами.

Так вот. Попробуйте исправить наборы данных. Если есть возможность, разбейте исходный на два. Первый только с заказами и количеством по спецификации. Второй - уже с заказами и поступлениями, без количества по спецификации, но с количеством по поступлениям. Свяжите их по совпадающим полям на закладке "Связи наборов данных" СКД.

В этом случае все выражения ресурсов на всех уровнях группировок будут элементарными: "Сумма(КоличествоПо...)". Для двух наборов данных СКД уже прекрасно поймет, где не должно быть дублирования, и не станет, например, несколько раз складывать количество по спецификации для одного и того же заказа, но разных поступлений. Ведь в наборе данных, где присутствует количество по спецификации, поступлений - нет.
19. VmvLer 09.01.20 11:36 Сейчас в теме
я думаю не взлетит ибо Вылюта сегодня упала
25. vasgius 09.01.20 11:50 Сейчас в теме
скиньте скрин с закладкой Ресурсы - для каких группировок какая формула?
26. Mahon83 13 09.01.20 12:06 Сейчас в теме
(25) Выделенное работает как нужно. Для общих итогов убрал совсем, думаю как правильно сделать.
Прикрепленные файлы:
27. Mahon83 13 09.01.20 12:21 Сейчас в теме
(25) Пробую понять, как вообще работает, пишу такую формулу. Выводится 300, 300, 3. Как мне убрать одну 300 лишнюю?
Почему он берёт значения, которые выделены красным, как взять те, что синим??
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот