Как в запросе ограничить уровень иерархии? #287839


#0 by itPiligrim
Есть иерархический справочник. Требуется сделать запрос с учетом иерархии, но ограничить вложенность. Скажем, выбрать все элементы до уровня вложенности = 3. Понятно, что можно выбрать все элементы, а потом при переборе проверить Выборка.Уровень, но это не эффективно...
#1 by zbv
добавь в условие, делов то...
#2 by Wladimir_spb
Какое, если не секрет?
#3 by itPiligrim
Что добавить в условие? Если можно пример...
#4 by Wladimir_spb
Есть возможность ограничить условием, но не очень красиво. Наверно, знает красивое решение)
#5 by itPiligrim
В принципе есть идея: ... ГДЕ        ) ...
#6 by zbv
ну не знаю красивое или не красивое ;) , но так работает:
#7 by Immortal
если б группировки были или итоги то можно. а так имхо неть..в смыле чтоб красиво..
#8 by Wladimir_spb
,Собственно, это то, что я назвал "некрасивым" решением. Кстати, условие "Справочник.Родитель В ИЕРАРХИИ (&Родитель)" вроде как лишнее, хотя нужно смотреть как это выполняется или просто производительность померить. Во всяком случае работать должно и без него.
#9 by Wladimir_spb
А что с группировками?
#10 by AntonioS
почему же некрасивое? по-моему единственное возможное
#11 by RomaH
в 8.1 извратился так: выгрузил в ТЗ добавил колонку Уровень Вычислил Поместил ТЗ в менеджер временных таблиц Наложил условие
#12 by Wladimir_spb
ЕдинственноВозможное <> Красивое Впрочем, о вкусах не спорят. Данное решение вполне рабочее, и я бы сам его использовал.
#13 by RomaH
к стати - что-то есть в компоновке данных (только что еще не разобрался) Уровень и УровеньВГруппировке
#14 by Immortal
нада подумать..в любом случае можно анализировать например сумма(Показатель) где показатель это 1 как показатель на разных уровнях иерархии запроса..
#15 by Wladimir_spb
Тоже не комильфо) Есть предложение, посвятить эту ветку поиску оптимального решения на вопрос Оптимальность: по быстродействию, универсальности и не в последнюю очередь эстетическая оценка. Не зря ведь авиа-конструкторы говорят, что "Некрасивый самолет не взлетит!" Хотя все предложенные здесь решения "летают". PS Интересно, чем ветка понравилась Пельмешке?)
#16 by Dionisious
Тоже интересует вопрос. И вот в каком ракурсе: есть регистр накоплений, например продажи, В нем есть измерение допустим Номенклатура. Как Вывести продажи номенклатуры только для номенклатуры уровень которой не больше n? Решение слишком сложно прикрутить. Пока что я вижу только при обработке выборки.
#17 by Dionisious
+ Да надеюсь понятно, что для групп должны быть продажи по группе.
#18 by Mort
Для столь оригинальной задачи можно и реквизит всунуть "уровень".
#19 by Wladimir_spb
В принципе, решение не сильно сложно прикрутить, практически к любому отчету. Если посмотреть, как в стандартных конфах добавляются условия по свойствам и категориям, то станет совсем просто. Надо еще один критерий оптимальности - изменение конфы. Лучше бы без них.
#20 by Dionisious
Не получится. Нужно же не для конкретной группы, а для всех групп второго уровня например. Можно конечно пустым родителем ограничить, но тогда это условие отсечет записи регистра, и следовательно итоговая сумма будет меньше.
#21 by Wladimir_spb
Не понял, какие записи отсечет? Можно поподробнее. Лучше с примером запроса.
#22 by Dionisious
для меня даже реквизит не даст результата. Опять же заранее не известно для каких справочников это понадобиться.
#23 by Dionisious
Например есть продажи: Если пользователь задает один уровень иерархии должно вывести: Г1  250 Если пользователь задет два уровня иерархии: Г1      250 Итоговая сумма не должна меняться естественно.
#24 by Wladimir_spb
Можно сделать проверку на иерархический справочник в группировках и добавлять поле "Уровень" в отбор. А "уровень" чтобы работал по родителю. Здесь нужен не отбор, а группировка по родителю n-ого уровня.
#25 by Dionisious
Задача в принципе такая же как и : нужно ограничить вложенность результата запроса.
#26 by Wladimir_spb
Несовсем. В запрос должно попасть все, но при сгруппировано должно быть соответствующим образом. Кстати, здесь вполне поможет механизм свойств. Объединить контрагентов свойствами, а не иерахией и юзать стандартные отчеты, с группировками по свойствам вместо иерахии.
#27 by Dionisious
со свойствами конечно классно, жаль только надо для номенклатуры, а там справочник - уровней 5 и элементов тысяч 20. Сложно расставлять. К тому же заранее не известно сколько группировок понадобится и по каким справочникам. Сейчас это номенклатура, завтра может быть подразделения, контрагенты, статьи затрат да мало ли что еще. Буду вывод отчетов переделывать.
#28 by Wladimir_spb
Свойства более универсально, гораздо более гибко, чем дерево иерархии. Настроить автоматическое заполнение свойств для новой номенклатуры, не так уж сложно + автоматом проставить для существующей в зависимости от иерархии. У контрагентов свойства тоже есть. Добавить в любой другой справочник, так же не сложно. Мне приходилось целиком создавать механизм свойств в БП, поэтому представляю о чем говорю.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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