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

1. Дмитрий74Чел 234 09.10.18 17:19 Сейчас в теме
Требуется создать отчет, в котором выручку распределить пропорционально складам. При этом данные по выручке хранятся без складов. Есть выпуск, по складам, вот пропорционально выпуску по складам и надо распределить выручку.

Сделал вычисление выручки через
Сумма(Выпущено)/ВычислитьВыражение("Сумма(Выпущено)", "", "Иерархия")*Сумма(Выручка)
Удалось распределить выручку по складу. Но есть проблема: группировка выше тоже распределяется, т.е. итог не сходится. Надо как-то сказать СКД, что формулу надо использовать только для "нижнего" уровня группировки.

Можно прописать
Сумма(Выпущено)/ВычислитьВыражение("Сумма(Выпущено)", "КатегорияПродукции", )*Сумма(Выручка)
но тогда нет суммы в группировках выше склада.

На снимке экрана ресурс который мне надо рассчитать называется "выручка факт по складу"
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Timur.V 78 09.10.18 17:30 Сейчас в теме
(1)
Надо как-то сказать СКД, что формулу надо использовать только для "нижнего" уровня группировки.

Наверно, нужно в СКД в Вычисляемые поля - добавить некое условие, которое работает не для всех записей:
Например:
Выбор
    Когда Колво < Максимум(Колво)
        Тогда Количество(Колво)
    Иначе Null
Конец

А в Ресурсах - уже берем это поле и считаем по формуле.
5. Дмитрий74Чел 234 09.10.18 17:34 Сейчас в теме
(3) уточнение: для нижнего уровня группировки - формула с ВычислитьВыражение(), а для вышестоящих - обычное Сумма(Выручка).
2. vadim1011985 99 09.10.18 17:27 Сейчас в теме
В СКД на закладке Ресурсы для нужного ресурса в поле "Рассчитывать по" можно указать нужную группировку к торый будет применятся выражение
4. Дмитрий74Чел 234 09.10.18 17:31 Сейчас в теме
(2) в ТЗ написано надо иметь возможность менять состав группировок. Боюсь поломается все тогда.
6. Timur.V 78 09.10.18 17:42 Сейчас в теме
(4)
менять состав группировок

Кажется, легко это не сделать, через интерфейс СКД. Нужно программно всё вычислять и создавать.
Вот пример ссылка, но там группировки нельзя перемещать т.к. всё сломается.

Можете создать несколько отчетов с готовыми группировками.
7. Дмитрий74Чел 234 09.10.18 17:46 Сейчас в теме
(6)
Нужно программно всё вычислять и создавать

Вот и я о том же. Проще заблокировать возможность изменения варианта отчета.
Но даже если так, т.е. использовать "Рассчитывать по" - остается вопрос (5) - как в вышестоящей группировке рассчитывать иное значение?

Кажется мне я неверную постановку вопроса сделал. Не вариант это по-разному в зависимости от группировки суммы считать.
8. vadim1011985 99 09.10.18 17:56 Сейчас в теме
я думаю можно как-то отталкиваться от системных полей Уровень и УровеньвГруппировке
10. Дмитрий74Чел 234 10.10.18 12:26 Сейчас в теме
(8) так и сделал. В выражении ресурса прописал
Выбор когда Уровень()=2 Тогда ВычислитьВыражение()
Иначе Сумма()
Конец
Топорно, но пойдет.
Хотел еще получить максимальный уровень, чтоб его подставлять в условие, а не жесткое "2", - но не получилось подружить Максимум() с Уровень().
Lyubogradov.P; +1 Ответить
9. VmvLer 09.10.18 18:02 Сейчас в теме
1. перед компоновкой вычислять имя группировки нижнего уровня
2. перед компоновкой установить значение недоступного пользователю параметра "ИмяСамойВложеннойГруппы"
3. есть выражения компоновки данных в которые можно передать имя группировки(если не проходит в СКД, то выражения в вычисляемых полях формировать программно)

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

Я так делал в отчетах АВС - получалось
11. vasiliy_09_05 6 03.09.20 09:12 Сейчас в теме
Друзья, доброго времени суток.
Необходима Ваша помощь.
Думаю, что кто-либо сталкивался уже с таким:
По сути мне необходим именно такой алгоритм, который указан в данной ветке форума.

То есть пример - нужно соединить 2 РН - "Товары переданные" и "Товары полученные". На самом нижнем уровне начальный остаток - сумма начальных остатков переданных и полученных, далее приход и расход (стандартная сальдовка).
Но на вышестоящих уровнях должна быть сумма начальных и конечных остатков предыдущего уровня.

Пытался в ресурсе сделать выражение типа
ВЫБОР КОГДА УРОВЕНЬ()=2 Тогда НачальныйОстаток ИНАЧЕ Сумма(НачальныйОстаток) КОНЕЦ
(просто пример), но тогда СКД вышестоящих уровней суммирует все значения нижестоящей, а не значения группировок.


Если кто то сможет натолкнуть на правильный вариант, был бы премного благодарен :)
Оставьте свое сообщение

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