СКД ИЕРАРХИЯ

1. pavlo 12.11.18 14:29 Сейчас в теме
Помогите кто-нибудь идеей плизз.
Суть в следующем:
Есть СКД в нем запрос оборотов по ЦФО - это работает.
Далее есть справочник с нужной структуру в которой (упрощенно опишу) есть иерархический справочник. На каком либо уровне в группе есть привязка к ЦФО, которое есть в запросе с оборотам так сказать Факт.

По этому ЦФО вывожу нормальную структуру, которую нужно пользователю и обороты.
Но теперь нарисовалось следующее, нужно добавить планы, планы есть только в РС в разрезе не элементов справочника (структуры), а ЦФО которые и есть на оборотах.

Так как ЦФО привязывается к группам справочника, то сделал так что по элементам сумма плана дупится и потом оформлением затирается, а на против групп считается МАКСИМУМ(План).

Но само собой взлетает проблема, СКД не считает как не делай агрегат МАКСИМУМ() только по элементам, в итоге:
Группа1 (13000р)
Эл1 (План 5000р)
Эл2 (План 5000р)
Эл3 (План 5000р)
Группа2 (вложена в Группа1) = 13000р
Эл1 (План 13000р)

Получается что максимум по элементам то верно идет, но Группа2 то внутри Группа1 и она само собой максимум и между этим все берет в итоге ерунда.

По идее по каждой группе самого нижнего уровня нужно по элементам МАКСИМУМ(), а между группами там по сути нужно СУММА()

Есть идеи плизз как реализовать, уже убился :(
+
По теме из базы знаний
Найденные решения
18. vasgius 19.11.18 14:59 Сейчас в теме
(16) раскрою, почему предложенный метод будет работать:
допустим у вас есть следующая таблица элементов:

- Элемент1_0_1
- Элемент1_0_2
- Элемент1_0_3
- Элемент1_2_1
- Элемент1_3_1,

для каждого элемента в основном наборе вы получаете ЦФО, получается следующее:
- Элемент1_0_1 | ЦФО_1
- Элемент1_0_2 | ЦФО_1
- Элемент1_0_3 | ЦФО_1
- Элемент1_2_1 | ЦФО_2
- Элемент1_3_1 | ЦФО_3

в дополнительном наборе у вас будет таблица c колонками "ЦФО" и "СуммаПлан"

ЦФО_1 | 100
ЦФО_2 | 300
ЦФО_3 | 250

если вы в расчете ресурса для поля "СуммаПлан" укажете формулу "Сумма(СуммаПлан)", то эта функция будет применяться ТОЛЬКО для таблицы из ДОПОЛНИТЕЛЬНОГО набора, а так как там нет дублей по ЦФО, то вы получите нужную сумму.
pavlo; +1
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Ганс 12.11.18 14:52 Сейчас в теме
ВычислитьВыражениеСГруппировкойМассив() попробуй посмотреть!

Возможно поможет...
+
3. Ганс 12.11.18 14:57 Сейчас в теме
Должно получится что-то типа такого Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаПлан)","Группа2")) а в столбце "Расчитывать по" - Группа1
+
4. pavlo 15.11.18 07:55 Сейчас в теме
(3)
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаПлан)","Группа2"))

А как указать группу (Группа1, Группа2) если это один реквизит, просто СКД его выводит с иерархией?
+
5. pavlo 15.11.18 11:30 Сейчас в теме
(3) По идее получается, средняя по элементам и вывод в ее родителя-группировку, а уже остальные выше группировки это сумма этих.
+
6. pavlo 15.11.18 13:46 Сейчас в теме
Распишу по другому, вдруг плохо описал:

Есть структура этого отчета в справочнике, пользователь сам ее рисует как хочет, в элементах, список статей из базы, которые должны попадать.

И все хорошо рисует и считается. Но руководство требует добавить планы к этому всему.

Тут беда в том, что планы (все это коряво по их предложению, но спорить нет смысла) определяются по ЦФО, ЦФО привязаны к некоторым группам разной вложенности в этом справочнике структуре, а по этим ЦФО есть РС с планами.

Так вот отчет выводит иерархию этого справочника, цепляет все фактические данные регистра бухгалтерии отлично.

По плану в запросе (изначально была идея) заполняю все элементы одним и тем же планом, под ЦФО которого они лежат (группа этого справочника).
Делал так как иерархия этого справочника в запросе то мне не доступна для джойна, ее формирует СКД.

Потом планировал сделать Максимум по этим элементам и по группам получить одно значение. Но столкнулся с тем, что по группам они Максимум, но тогда и по всем вышестоящим выбирается Максимум из уже нижних групп, а не сумма и на итого фигня.
+
7. vasgius 15.11.18 16:04 Сейчас в теме
а так не подойдет:
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаПлан)", "ЦФО"))
+
8. pavlo 16.11.18 09:38 Сейчас в теме
(7) Делал получается более или менее, но не все так :(
Прикрепленные файлы:
+
15. vasgius 19.11.18 14:22 Сейчас в теме
(8) не пробовали получить плановые данные отдельным набором по ЦФО? Имею ввиду следующее:
в основном наборе СКД вы получаете все остальные показатели + для элементов определяете ЦФО
в дополнительном наборе получаете план по ЦФО
связываете основной набор и набор с планами по ЦФО, при этом ЦФО будет параметром, который передается списком.

При такой реализации даже использование функции "Сумма" будет достаточно
+
16. pavlo 19.11.18 14:29 Сейчас в теме
(15)
Получится же тоже самое, разве нет?
ЦФО у меня на какой то группе, ну вытащу в основном наборе я по элементам ЦФО
отдельный набор будет ЦФО и план
чем соединить?

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

тоесть
группа1.1 = (максимум из ее элементов) = 50
группа1.2 = (максимум из ее элементов) = 30

А Группа 1 их родитель максимум покажет 50, а нужно получается 80
+
17. vasgius 19.11.18 14:37 Сейчас в теме
(16) в комментарии выше я ошибся, вместо функции Максимум, нужно было указать Сумма (исправил)
+
18. vasgius 19.11.18 14:59 Сейчас в теме
(16) раскрою, почему предложенный метод будет работать:
допустим у вас есть следующая таблица элементов:

- Элемент1_0_1
- Элемент1_0_2
- Элемент1_0_3
- Элемент1_2_1
- Элемент1_3_1,

для каждого элемента в основном наборе вы получаете ЦФО, получается следующее:
- Элемент1_0_1 | ЦФО_1
- Элемент1_0_2 | ЦФО_1
- Элемент1_0_3 | ЦФО_1
- Элемент1_2_1 | ЦФО_2
- Элемент1_3_1 | ЦФО_3

в дополнительном наборе у вас будет таблица c колонками "ЦФО" и "СуммаПлан"

ЦФО_1 | 100
ЦФО_2 | 300
ЦФО_3 | 250

если вы в расчете ресурса для поля "СуммаПлан" укажете формулу "Сумма(СуммаПлан)", то эта функция будет применяться ТОЛЬКО для таблицы из ДОПОЛНИТЕЛЬНОГО набора, а так как там нет дублей по ЦФО, то вы получите нужную сумму.
pavlo; +1
19. pavlo 20.11.18 09:38 Сейчас в теме
(18)
Не пойму...
- Элемент1_0_1 | ЦФО_1
- Элемент1_0_2 | ЦФО_1
- Элемент1_0_3 | ЦФО_1
- Элемент1_2_1 | ЦФО_2
- Элемент1_3_1 | ЦФО_3

ЦФО_1 | 100
ЦФО_2 | 300
ЦФО_3 | 250

Дальше джойню вторую таблицу по ЦФО? если да то...
Получится же

- Элемент1_0_1 | ЦФО_1 | 100
- Элемент1_0_2 | ЦФО_1 | 100
- Элемент1_0_3 | ЦФО_1 | 100
- Элемент1_2_1 | ЦФО_2 | 300
- Элемент1_3_1 | ЦФО_3 | 250

Так как группа 1 общая для всех то получается должно получится следующее:
Группа 1_0 (100) а сумма(СуммаПлан) ведь даст 300, разве нет?
Группа 1_2 (300)
Группа 1_3 (250)
+
20. pavlo 20.11.18 11:47 Сейчас в теме
(18) Огромное спасибо, а можете пояснить как это соединение работает на пальцах или есть где почитать именно разжевано? ;)
vasgius; +1
21. vasgius 20.11.18 21:17 Сейчас в теме
(20)возможно про это написано в книжке "Разработка сложных отчетов" (https://its.1c.ru/db/pubcomplexreports#content:2:hdoc),
но сам пришел к этому путем самостоятельного разбора при реализации различных отчетов.
Сам для себя трактую такое поведение СКД следующим образом:
При получении данных из наборов они не соединяются сразу, т.е. в случае с двумя наборами у нас будут получены две НЕ связанные таблицы. При выводе результата отчета, для каждой строки каждой группировки, если СКД думает, что ей нужны данные из другой таблицы, то пробует их получить осуществляя поиск строк в связанной таблице по полям указанным в связях наборов и подставляя как значение для связи данные из текущей строки основной таблицы.
Все описание является моей субъективной точкой зрения (и весьма приземленной, так как в СКД наверняка есть какая то оптимизация), но пока я не столкнулся со случаями опровергающими ее +
pavlo; +1
22. pavlo 03.12.18 09:44 Сейчас в теме
(18)
привет
наши бухи выдумали дальше по этому отчету :(
Напомню отчет ЦФО строки, Статьи колонки и детальными записями еще прикрутил планы с которыми вы мне помогли.

Теперь хотят чтобы планы там 3 колонки на самом деле, Доходы, Расходы, ИтогоПланы (Доходы-Расходы) чтобы также как статьи были с плюсиками, чтобы сворачивать :(

Как бы я их не оборачивал в группы в настройках, в наборах данных толку нет, ресурсы она так делать не хочет :(

Не делали такое?
+
9. pavlo 16.11.18 12:25 Сейчас в теме
Неужели никто не сталкивался? :(
+
10. Ганс 16.11.18 13:31 Сейчас в теме
Почитайте мануал "ВычислитьВыражениеСГруппировкойМассив" там можно и иерархию указать и по каким полям рассчитывать что угодно! Просто по описанию трудно понять структуру отчёта!
+
11. pavlo 16.11.18 14:00 Сейчас в теме
(10) По мануалу ничего не понятно как она работает в том и дело. Очень скудное описание.
А четкого описания как поведет себя СКД при тех и тех параметрах нигде не нашел :( Неделю бьюсь.

Чуть выше картинку приложил, там вроде все подробно описал как выглядит и как нужно :(
Или может есть подробный мануал, чтобы на каждое предложение в нем не возникало еще сотня вопросов остающихся без ответа :(
+
12. Ганс 16.11.18 14:38 Сейчас в теме
(11) В "Расчитывать по" у вас какое поле стоит?
+
13. pavlo 16.11.18 15:03 Сейчас в теме
14. pavlo 19.11.18 10:22 Сейчас в теме
что то разные нюансы перепробовал с этими функциями и результат плачевный.
может есть вариант другой, как то джойниться к этим группам только? Одна беда формирует их сама СКД.
+
Внимание! Тема сдана в архив

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