Вход | Регистрация
 

СКД Рекурсивный запрос. Вывод уровня иерархии

СКД Рекурсивный запрос. Вывод уровня иерархии
Я
   breezee
 
24.04.21 - 17:14
Коллеги, добрый день! Подскажите, пожалуйста, у меня есть рекурсивный запрос на СКД. Связываю набор данных сам с собой - строю дерево иерархии. Надо вывести уровень иерархии. Вывожу стандартный реквизит уровень иерархии - выводится, работает.
Но у меня есть зацикливание в данных, по этому вывожу не в дерево, а в таблицу, там уровень иерархии всегда 1, но по факту иерархия есть.
Вопрос, можно ли как-то считать уровень иерархии на СКД выводя не дерево? Я пытался параметр добавлять и прибавлять к нему 0, но он всегда был 0 и 1. В общем ничего не вышло. Может это как-то решается? Через вычисляемые поля или типо того?
   МихаилМ
 
1 - 24.04.21 - 23:30
можно построить из тз дз через пз. или
посчитать уровни через решениеслау
   vde69
 
2 - 25.04.21 - 00:07
Если у тебя зацикливание, то что ты понимаешь под уровнем?
   breezee
 
3 - 25.04.21 - 13:17
(1) Кстати спасибо! Можно посчитать уровни уже по конченым данным. Спасибо! В этом направлении я не думал) Но пока не до конца вижу решение, может есть какие-то альтернативы
А через СЛАУ как? Я помню СЛАУ из высшей математики, а как посчитать им уровни не знаю)
(2) Это 1 выполненный запрос. То есть СКД выполняет 1 запрос - это уровень 1. Потом по результату запроса выполняет другой запрос - это уровнь 2 и т.д. А вот как получить этот уровнь на каждом этапе выполнения я не понимаю.
Я понимаю, что нормальным решением будет избавиться от зацикливания, но, боюсь на это не согласится заказчик - слишком много спецификаций и аналогов - сложно понять где зацикливание, очень много времени уйдет на анализ. Даже если  как-то смастерю запрос на зацикливание - могут не понять как разрешить зацикливание
   asady
 
4 - 25.04.21 - 13:21
(0) бесконечный уровень иерерархии - зачем?
   breezee
 
5 - 25.04.21 - 13:30
(4) У меня такая задача: Есть спецификация где из мяса делают фарш. На каждом переделе есть аналоги. Допустим, есть 5 уровней вложенности. Мне надо на раскрутить мясо до колбасы с учетом аналогов, допустим получилось 100 возможных веток. Для каждой ветки надо получить для 10 уровня аналоги с предыдущих уровней (не со всех, а только по определённым условиям, допустим получилось по 3 передела с каждой ветки)и убрать ветки где номенклатура является аналогом. Но так как у меня не дерево - я не знаю что идет из какой ветки. + еще жестки ограничения на время выполнения, заказчик хочет чтобы это выполнялось у оператора на производстве и выполнялось быстро.
Сейчас, до этих требований просто раскручивается рекурсивно на СКД и выводится, зацикливание разруливается выводом по элементу, если итератор больше 400 - считаем что зацикливание есть, прерываем и разузловывем по тому что получилось
   breezee
 
6 - 25.04.21 - 13:33
Для 5 уровней* аналоги с предыдущих
В общем надо как-то получить уровень иерархии которую выполняет СКД
В крайнем случае можно не на СКД сделать, но это долго выполняется
   asady
 
7 - 25.04.21 - 14:17
(5) вопросы:
1. Аналоги только по сырью (материалам) или есть аналоги и по ПФ
2. В зависимости от применения аналога разузлование меняет маршрут или нет?
   МихаилМ
 
8 - 25.04.21 - 14:21
(0)Вы уже это ерундой 2,5 месяца маитесь. Алгоритм Разузлование номенклатуры
сколько еще планируете ?
   breezee
 
9 - 25.04.21 - 14:28
(7)
1 Аналоги и на ПФ. Я уточню кстати, спасибо. Может конкретно в этой задаче и не нужны аналоги на ПФ, может будет проще сделать
2 В зависимости от применения аналогов маршрут меняется, Создается ветка по основному ингредиенту и по аналогу. + Если в дальнейшем в ветке основное сырье является аналогом предыдущей ветки то надо его исключить (или типо того)
(8) Кроме этой задачи я занимаю другими задачами. Если у Вас сложилось впечатление что я 2.5 месяца пытаюсь построить 1 запрос это не так. С прошлой задачей я разобрался (в т.ч. благодаря Мисте, за что спасибо). Я передал задачу - сейчас пришли уточнения которые надо доработать. Я попробовал, но ничего не придумал - решил спросить помощи. Если Вам не хочется отвечать в этой ветке - не отвечайте, я не обижусь)
   asady
 
10 - 25.04.21 - 15:14
(9) изменение маршрута при использовании аналога предполагает использование других точек маршрута И/ИЛИ других тех.операций И/ИЛИ других выходных ПФ и т.п.
Если применение аналога приводит максимум к параметрической замене характеристики продукта, изменение количества списанного сырья, или выходного продукта или изменения времени тех.операции (на том же рабочем центре) можем говорить что применение аналога не меняет маршрута разузлования

Если выполняются два условия из (7) возможен вариант:
1) Делаем спецификацию-шаблон - где вместо материалов с возможной заменой стоит основной материал (или плановый материал) и соответственно в спецификациях использованы шаблонные количества и т.п.
2) Получаем дерево разузлования (таблицу разузлования вообщ-то) с этими плановыми материалами.
3) строим новую таблицу разузлования со всеми возможными вариантами замены материалов (запрос с левым соединением с таблицей аналогов)
в результате имеешь просто кучу вариантов и очень быстро.
   breezee
 
11 - 25.04.21 - 15:32
(10) Спасибо большое! Интересный вариант, обсужу с технологами, подойдет ли им. Идею понял, но они хотят аналоги на каждом уровне то есть есть основное сырье увроня1 и 3 его аналога. НА втором уровне к каждому аналогу хотят 3 своих аналога и т.д. На счет некоего шаблона - это интересно и быстро. Спасибо, попробую обсудить
   ILM
 
12 - 25.04.21 - 15:45
(11) Мой вам совет сделайте регистр "Состав изделия по модификации": ГП, характеристика ГП, модификация, уровень, уровень пф, ПФ, Характеристика ПФ, спецификация, номенклатура, характеристика номенклатуры, количество на 1ед. ГП, количество на 1ед. ПФ, количество по норме, количество с учетом Техпотерь/Брака. Отсюда и потребность возьмете, и задания на ПФ, и нормы расхода. И разные модификации, и уровень вложенности и  т.д. У нас там еще и технология зашита (длительность, подразделения и т.д.) По сути это ресурсные спецификации, только вместо  этапов - уровни изделия.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.