|
СКД: Отчет с иерархией | ☑ | ||
---|---|---|---|---|
0
Digger
28.06.16
✎
08:50
|
Нужно сделать отчет на СКД план-факт по продажам.
Отчет типа ----------------план факт группа 1 0 20 - группа 11 20 20 ---- номен 1 0 10 ----- номен 2 0 10 Проблема, что план устанавливается на конкретную группу и не должен отображаться выше по иерархии, а факт только по номенклатуре, и наоборот по иерархии суммируется вверх. Можно конечно вручную для каждого элемента рассчитать в запросе и план и факт, но это будет долго, и наверное есть какое то более красивое решение с помощью СКД. Вообщем уже сломал всю голову и СКД, помогите кто чем может. ) |
|||
1
aleks_default
28.06.16
✎
09:08
|
В ресурсах, одно и то же поле ресурса добавляешь столько раз сколько тебе нужно и через "рассчитывать по" указываешь по каким группировкам как считать, сумму там или максимум.
|
|||
2
aleks_default
28.06.16
✎
09:10
|
И еще почитай раздел справки "Функции языка выражений системы компоновки данных".
|
|||
3
Digger
28.06.16
✎
09:15
|
(1) Группировка всего одна. Максимум для "плана" заполнит значение вверх по всей иерархии, а нужно для конкретной группы.
|
|||
4
aleks_default
28.06.16
✎
09:15
|
Ты не пиши, ты читай
|
|||
5
aleks_default
28.06.16
✎
09:54
|
Вернее "рассчитывать по" тут не поможет, но можно использовать функцию языка "Уровень()".
В поле "выражение" ресурса План пиши так ВЫБОР КОГДА Уровень() > 1 ТОГДА 0 ИНАЧЕ СУММА(План) КОНЕЦ Номер уровня сам определяй какой тебе нужно Для факта походу вообще ничего не нужно, обычная функция СУММА(Факт). |
|||
6
Digger
28.06.16
✎
11:01
|
(5) Все не так просто. План может быть задан на любом уровне иерархии, и явно уровнем его не выделишь. Сумма(ПЛАН) использовать не получиться, потому как он тогда сложит все значения подчиненных планов, что неверно.
План гр 1 <> гр1.1+гр1.2 |
|||
7
aleks_default
28.06.16
✎
11:07
|
Ну не используй вообще агрегатную функцию. Напиши просто План в выражении ресурса.
|
|||
8
Digger
28.06.16
✎
11:20
|
(7) Какая разница. План уходит вверх по иерархии.
Получается не гр 1 0 гр 11 20 гр 12 0 а гр 1 20 гр 11 20 гр 12 0 |
|||
9
DrShad
28.06.16
✎
11:24
|
Делай собственную иерархию
|
|||
10
aleks_default
28.06.16
✎
11:48
|
(8) Че-то ты меня лечишь. Откуда возьмется сумма вверх по иерархии, если выражение суммирования в ресурсе не прописано? Может у тебя в запросе уже эта сумма посчитана?
Выведи таблицу без группировок (только детальные записи) и посмотри как план заполнен по группам. Считается ли там сумма? |
|||
11
Rokford
28.06.16
✎
11:52
|
В настройках отчета для группировки, где не нужен план можно вообще убрать поле "План" на закладке "выбранные поля", и выводить их только в группировке.
|
|||
12
aleks_default
28.06.16
✎
11:55
|
(11)У него группировка одна (иерархия) просто несколько уровней.
|
|||
13
Rokford
28.06.16
✎
12:17
|
(12) Понял, невнимательно читал. Полностью согласен с (7). Ждем ответа на (10).
|
|||
14
Digger
28.06.16
✎
13:49
|
(10) Не знаю откуда.
В ресурсе у Плана стоит просто План без суммирования. У "Факта" Сумма() Запрос простой. ВЫБРАТЬ ТП, ПланКолВо ИЗ ПланПродажи ОБЪЕДИНИТЬ ВЫБРАТЬ ТП, ФактКолВо ИЗ Продажи В итоге вот такое выводит в результате http://clip2net.com/s/3zEJohn |
|||
15
nasik90
28.06.16
✎
14:07
|
Попробуй план убрать из ресурсов и группировку сделать по торговому представителю(группировка по иерархии) и плану.
|
|||
16
Digger
28.06.16
✎
14:39
|
(15) Не получится, тогда останется значение плана только в нижней строке.
|
|||
17
kittystark
28.06.16
✎
14:42
|
была такая заморочка, решалась через прописание в ресурсе ГрупповаяОбработка(...) с вызовом своей функции из нее
|
|||
18
aleks_default
28.06.16
✎
14:53
|
Добавь в запрос СГРУППИРОВАТЬ ПО чтобы у тебя и план и факт были в одной строке, тогда по идее (7) должно сработать.
|
|||
19
Digger
28.06.16
✎
15:04
|
(18) Они не могут быть в одной строке. факт всегда на нижнем уровне иерархии(ТП), планы на верхних(филиал).
(17) Ну, если не получится настройками, то конечно допилю кодом. ) |
|||
20
aleks_default
28.06.16
✎
15:20
|
Я говорю, сделай сначала запросом нормальную "плоскую" таблицу, де ТП сгруппированы и план и факт выведены в разные колонки ОДНОЙ строки. Для того чтобы потом когда будешь делать структуру группировок не нужно было использовать агрегатную функцию.
|
|||
21
kittystark
28.06.16
✎
15:21
|
(19) там того кода... пихаешь в общий модуль:
Функция ВернутьЗначениеПоИерархии(Данные) Экспорт Если Данные = Null Тогда Возврат Null; КонецЕсли; рез = ""; Попытка рез = Данные.ТекущийЭлемент.КолвоПлан; Исключение КонецПопытки; Возврат рез; КонецФункции |
|||
22
kittystark
28.06.16
✎
15:25
|
ресурс:
МойОбщийМодуль.ВернутьЗначениеПоИерархии(ГрупповаяОбработка("КолвоПлан КАК КолвоПлан, Номенклатура КАК Номенклатура",,"Номенклатура")) пока дошли до этого решения ушло несколько дней со всякими другими извратами через запросы и другие выражения ресурсов |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |