Конечно, когда у Вас серийное или мелкосерийное производство — не вопрос, несколько минут — и Ваша номенклатура полностью разузлована в обработке "Конструктор спецификаций". Оттуда можно также распечатать ряд отчетов по покупным материалам и комплектующим, полуфабрикатам собственного производства и т.д.
Но когда на предприятии штучное производство с большим ассортиментом и различным числом вложенности спецификаций, то эти несколько минут превращаются в несколько рабочих часов или даже дней.
Поэтому и была поставлена задача разузлования "нерекурсивным" методом.
1. Откуда есть пошла … идея
Подобная задача уже решалась //infostart.ru/public/78285/
Но мне нужна была не просто развернутая спецификация, но количество материальных затрат, которое пойдет на изготовление продукции, их стоимость по определенному виду цен, а также анализ на наличие «мертвых петель» любой глубины вложенности.
2. Как решался вопрос.
Решался по тому же принципу, что и в исходной статье, но там бралась цепочка кодов, а здесь добавлялись колонки в запрос. Непосредственно с пересчетом количества через единицу измерения. И организовывался вывод данных в дерево значений.
3. Результат выполнения.
Результатом выполнения является дерево значений, которое можно перенести в любой необходимый отчет.
Хорошая идея
разработки пригодилась в качестве основы, сэкономила немного времени. спасибо
Позанудствую. Рекурсия ни в чем не виновата 🙂
Ускорение получено заменой циклического обхода КАЖДОЙ ВЕТКИ на циклический обход УРОВНЕЙ дерева в целом. Что, несомненно, на порядки эффективнее.
Этот же алгоритм можно реализовать и рекурсивно, только смысла нет.
Но я понимаю, что ты хотел сказать. Что в погоне за элегантностью и компактностью кода некоторые индивиды тупо забивают на эффективность решения реальных задач. Есть такое.
Партионка или РАУЗ?
Все равно. Разузлование по спецификациям.
Приветствую, понравилась ваша работа. Но есть один нюанс, если у нас установлена цена на выходное изделие, то считается она не корректно, а именно функцией Сумма цена множится на число вхождения в нее составляющих. Например поставили цену 1, то на выходе будет 63 (число элементов вхождения умноженное на цену). Пока вышел из положения так
| СУММА(Временная.Сумма»+Строка(Итератор)+»)/Количество(Временная.Сумма»+Строка(Итератор)+»)КАК Сумма»+Строка(Итератор)+»
а сумму корня пересчитываю в итерации ветвей