Разузлование номенклатуры без рекурсии

Те, кто работал с конфигурацией УПП, знают, что разузлование номенклатуры в этом чудо-продукте делается рекурсией и только рекурсией.
Конечно, когда у Вас серийное или мелкосерийное производство — не вопрос, несколько минут — и Ваша номенклатура полностью разузлована в обработке "Конструктор спецификаций". Оттуда можно также распечатать ряд отчетов по покупным материалам и комплектующим, полуфабрикатам собственного производства и т.д.
Но когда на предприятии штучное производство с большим ассортиментом и различным числом вложенности спецификаций, то эти несколько минут превращаются в несколько рабочих часов или даже дней.
Поэтому и была поставлена задача разузлования "нерекурсивным" методом.

1. Откуда есть пошла … идея

Подобная задача уже решалась //infostart.ru/public/78285/

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

2. Как решался вопрос.

Решался по тому же принципу, что и в исходной статье, но там бралась цепочка кодов, а здесь добавлялись колонки в запрос. Непосредственно с пересчетом количества через единицу измерения. И организовывался вывод данных в дерево значений.

3. Результат выполнения.

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

7 Comments

  1. kser87

    Хорошая идея

    Reply
  2. roofless

    разработки пригодилась в качестве основы, сэкономила немного времени. спасибо

    Reply
  3. herfis

    Позанудствую. Рекурсия ни в чем не виновата 🙂

    Ускорение получено заменой циклического обхода КАЖДОЙ ВЕТКИ на циклический обход УРОВНЕЙ дерева в целом. Что, несомненно, на порядки эффективнее.

    Этот же алгоритм можно реализовать и рекурсивно, только смысла нет.

    Но я понимаю, что ты хотел сказать. Что в погоне за элегантностью и компактностью кода некоторые индивиды тупо забивают на эффективность решения реальных задач. Есть такое.

    Reply
  4. echo77

    Решение с помощью СКД в моей базе пока не видел спецификацию которая строилась бы дольше 3 сек. Друзья, если не сложно поделитесь своим деревом

    Reply
  5. sukhov19vladimir

    Партионка или РАУЗ?

    Reply
  6. Protey77

    Все равно. Разузлование по спецификациям.

    Reply
  7. Simonov_NPM

    Приветствую, понравилась ваша работа. Но есть один нюанс, если у нас установлена цена на выходное изделие, то считается она не корректно, а именно функцией Сумма цена множится на число вхождения в нее составляющих. Например поставили цену 1, то на выходе будет 63 (число элементов вхождения умноженное на цену). Пока вышел из положения так

    | СУММА(Временная.Сумма»+Строка(Итератор)+»)/Количество(Временная.Сумма»+Строка(Итератор)+»)КАК Сумма»+Строка(Итератор)+»

    а сумму корня пересчитываю в итерации ветвей

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *