СКД расчет итогов с отбором значений группировок #769608


#0 by ShurikSoft1C
Добрый день! Платформа: 8.3.7 Имеется отчет с произвольной иерархией элементов (справочника) и расчетом итогов для групп средствами СКД. СтатьяРодитель1 ........ 30 (Рассчитывается автоматом итоги в СКД)    СтатьяРебенок11 ..... 10 (Собирается с оборотов)    СтатьяРебенок12 ..... 20 (Собирается с оборотов) СтатьяРодитель2 ........ 70 ИспользуетсяДля - СтатьяРодитель3 (Рассчитывается автоматом итоги в СКД)    СтатьяРебенок21 ..... 50    СтатьяРебенок22 ..... 20 СтатьяРодитель3 ........ 70 Должно суммировать показатели определенных статей (здесь к примеру только СтатьиРодителя2), показатели которых в свою очередь являются итоговой суммой их детей. У СтатьиРодитель3 имеется таблица с перечнем статей, которые он должен суммировать. При формировании очета в таблицу добавил колонку (маркер ИспользуетсяДля), он указывает для расчета какой статьи используется текущий показатель. Как видно из таблицы СтатьяРодитель2 Должна суммироваться в СтатьюРодитель3. Пробую функцию в ресурсе: ВычислитьВыражение("ВЫБОР КОГДА Представление(ИспользуетсяДля) = """ + Представление(СтатьяФинансовогоОтчета) + """ ТОГДА Сумма(СуммаОборот) ИНАЧЕ Сумма(Един) КОНЕЦ", "СтатьяФинансовогоОтчета", "ОбщийИтог") Но она не пробегает по всему отчета, а обработывает только детей СтатьиРодителя3 Подскажите пожалуйста, может кто сталкивался с такой ситуацией. Второй день мучаю гугл, результат NULL.
#1 by Игорь Коломойский
Ставь множитель 0 либо 1 по своим признакам и суммируй результаты. Соответственно, при умножении на 0 будет нулевой результат, который не войдёт в сумму, а по 1 - войдёт.
#2 by ShurikSoft1C
Вот что сделал ВычислитьВыражение("Сумма(СуммаОборот) * ВЫБОР КОГДА Представление(ИспользуетсяДля) = """ + Представление(СтатьяФинансовогоОтчета) + """ ТОГДА 1 ИНАЧЕ 0 КОНЕЦ", , "ОбщийИтог") Если я устанавливаю параметр функции ОбластьВычисления, группировку по которым выполняется расчет, я так СКД пробегает только по детям текущей группировки и не просматривает весь отчет
#3 by ShurikSoft1C
Если я убираю область расчета, СКД ругается что не можен найти поле СуммаОборот, хотя оно указано в выбранных полях отчета
#4 by ShurikSoft1C
Может я не там поставил, подскажи пожалуйста, то ты имел ввиду?
#5 by ShurikSoft1C
up
#6 by AceVi
ВычислитьВыражение("ВЫБОР КОГДА Представление(ИспользуетсяДля) = """ + Представление(СтатьяФинансовогоОтчета) + """ ТОГДА Сумма(СуммаОборот) ИНАЧЕ Сумма(Един) КОНЕЦ", "СтатьяФинансовогоОтчета", "ОбщийИтог") Может не ОбщийИтог а СтатьяФинансовогоОтчетаГруппировка? СтатьяРодитель3 Это что? это группировка сформированная запросом? или это строка полученная выборкой в запросе?
#7 by ShurikSoft1C
СтатьяРодитель3 - это группировка.
#8 by ShurikSoft1C
+ Синтаксис (на всякий случай) ВычислитьВыражение(<Выражение>, <Группировка>, <ОбластьВычисления>..... СтатьяРодитель и СтатьяРебенок, это одна и та же группировка, только разные уровни иерархии. Я эту иерархию получаю как в Хрусталевой "Вывод данных в свободной иерархии" и присоединяю набор данных с СуммаОборот. Этим самым заполняю суммы детей иерархии, родители рассчитываются уже итогами в СКД. Если не указывать "ОбщиеИтоги" или указать в параметре "Группировка" - "СтатьяФинансовогоОтчета" он не видит своих соседей по уровню, а выбирает только среди детей.
#9 by ShurikSoft1C
up
#10 by AceVi
Кстати что за глупость - у тебя СтатьяРодитель2  и СтатьяРодитель3 имеют один и тот же уровень в группировке? ну вот потому и не считает. он сумму элемента родителя собирает только по подчиныным элементам а не по всему отчету идет. Если у тебя уровень одинаковый но тебе НУЖНО что бы один родитель был в иерархии другого то делай "вирутальные группировки" в запросе. Типа такого ВЫБОР КОГДА СтатьяРодитель2 ТОГДА "Уровень2" КОГДА СтатьяРодитель3 ТОГДА "Уровень2" КОНЕЦ КАК  ВиртГруппировка и т.д. В СКД затем делай группировку не по иерархии а по этому новому полю. т.е. в скд будет 2 группировки ВиртГруппировка и ей подчиненная СтатьяФинансовогоОтчета(только элементы)
#11 by AceVi
Плохой совет) он же не построит дерево группировки по этим данным. связи между уровнями то нету. Значит сделай справочник где отобразишь нужную тебе группировку(каждый элемент справочника будет иметь ссылку на СтатьяРодитель и точно такое же название, просто измениться их взаимное подчинение), а затем точно так же 2 группировки в СКД Группировка из Справочника(ТолькоИерархия) и группировка СтатьяФинансовогоОтчета(толькоЗлементы)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С