|
Вопрос про разузлование спецификаций номенклатуры | ☑ | ||
---|---|---|---|---|
0
vfrcbv
17.07.15
✎
03:27
|
Здравствуйте, для разузлование номенклатуры в БП 3.0 был использован следующий код:
ТекстЗапроса = "ВЫБРАТЬ | ЕСТЬNULL(Спец.Номенклатура, Исх.Номенклатура) КАК Номенклатура, | Исх.Количество * ЕСТЬNULL(Спец.Количество, 1) КАК Количество, | Исх.СтрокаКодов + ЕСТЬNULL(Спец.КодНоменклатуры, """") КАК СтрокаКодов, | ВЫБОР | КОГДА Исх.ПризнакКонцаВетки > 0 | ТОГДА Исх.ПризнакКонцаВетки | КОГДА Спец.КодНоменклатуры ЕСТЬ NULL | ТОГДА 1 // нормальное завершение ветки | КОГДА Исх.СтрокаКодов ПОДОБНО Спец.КодНоменклатуры | ТОГДА 2 // зацикливание | ИНАЧЕ 0 // ветка продолжается | КОНЕЦ КАК ПризнакКонцаВетки |ПОМЕСТИТЬ Последующая |ИЗ | Исходная КАК Исх | ЛЕВОЕ СОЕДИНЕНИЕ Спецификация КАК Спец | ПО (Исх.ПризнакКонцаВетки = 0) // соединяемся только тогда, когда ветка продолжается | И Исх.Номенклатура = Спец.Владелец |; |УНИЧТОЖИТЬ Исходная |; |ВЫБРАТЬ ПЕРВЫЕ 1 Посл.Номенклатура |ИЗ Последующая КАК Посл |ГДЕ Посл.ПризнакКонцаВетки = 0"; //Цикл получения выходной таблицы Для Счетчик =0 по КоличествоЦиклов+1 Цикл Запрос.Текст = СтрЗаменить(ТекстЗапроса,"Исходная","ВремТаблица"+ Счетчик); Запрос.Текст = СтрЗаменить(Запрос.Текст,"Последующая","ВремТаблица"+(Счетчик+1)); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Счетчик = Счетчик + 1 ; Прервать; КонецЕсли; КонецЦикла; взятый с http://catalog.mista.ru/public/78285/. В результате получил материалы из которых состоит номенклатура. (ветки неимеющие подчиненных ("детей") с количеством). Подскажите пожалуйста, как модифицировать этот код, чтобы получить не только материалы, но и все подчиненные узлы номенклатуры? |
|||
1
Peltzer
17.07.15
✎
05:55
|
У себя решал своими силами.
В такой формулировке, на мой взгляд, решение очевидно: 1. Дан граф вложенности номенклатуры, а именно массив ребёр вложенности с процентом участия номенклатуры-сырья в номенклатуре-изделии. 2. Дан массив затрат, составляющих полную стоимость изделия. 3. Задача получить массив затрат в разрезе "первичной" номенклатуры. То есть, той, которая ни из чего не выпускается. |
|||
2
vfrcbv
17.07.15
✎
10:29
|
(1) то что вы описали, решает алгоритм приведённый сверху. в результате получаем "первичную" номенклатуру, но мне еще надо получить все узлы входящие в изделие...
подскажите как доработать код сверху? |
|||
3
ХардHard
17.07.15
✎
10:39
|
(2) В 0 фигня какая-то. Делал рекурсией запрос писал сам.
Там делов то на часик-два. Позови специалистов. |
|||
4
vdeemer
17.07.15
✎
10:47
|
(3) Рекурсия рулит однозначно. Как ни странно, везде разузлование в УПП делается тоже как в (1)...
|
|||
5
vdeemer
17.07.15
✎
10:47
|
(4) конечно, "в (0)"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |