![]() |
![]() |
![]() |
|
как написать рекурсивный запрос | ☑ | ||
---|---|---|---|---|
0
Adre
21.02.08
✎
15:17
|
в УПП надо сделать разбор спецификации по видам материалов в нее входящих. Если попадается узел то надо его также раскрутить по видам материалов. В узле может быть еще узел и т.д.
Далее текст запроса без раскрутки узлов. Как сделать раскрутку по узлам? Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийЭлемент", СсылкаНаОбъект); Запрос.УстановитьПараметр("КодыСпеций", КодыСпеций); Запрос.УстановитьПараметр("КодыУпаковки", КодыУпаковки); Запрос.Текст = "ВЫБРАТЬ | СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Номенклатура, | СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмеренияНаименование, | СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК Количество, | АналогиНоменклатуры.Аналог КАК Аналог |ИЗ | Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналогиНоменклатуры КАК АналогиНоменклатуры | ПО СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = АналогиНоменклатуры.Номенклатура |ГДЕ | СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка = &ТекущийЭлемент | И (НЕ СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура.НоменклатурнаяГруппаЗатрат.Код В (&КодыУпаковки)) | И (НЕ СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура.НоменклатурнаяГруппаЗатрат.Код В (&КодыСпеций))"; Т1 = Запрос.Выполнить().Выгрузить(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийЭлемент", СсылкаНаОбъект); Запрос.УстановитьПараметр("КодыСпеций", КодыСпеций); |
|||
1
Adre
21.02.08
✎
15:22
|
Узел это еще одна спецификация
получается матрешка, спецификация в спецификации |
|||
2
ЗлобнийМальчик
21.02.08
✎
15:23
|
запрос в цикле
|
|||
3
Adre
21.02.08
✎
15:25
|
(2) пример можно
|
|||
4
ЗлобнийМальчик
21.02.08
✎
15:28
|
500 р))))
|
|||
5
Adre
21.02.08
✎
15:39
|
(4) не серьезное предоложение
на форуме люди обменеваются опытом |
|||
6
Defender aka LINN
21.02.08
✎
15:40
|
(5) Предлагай опыт - обменяемся. Если нет опыта - сгодится и 500р :)
|
|||
7
Adre
21.02.08
✎
15:42
|
(6) разберусь - предложу
нет проблем, мне не жалко |
|||
8
Нуф-Нуф
21.02.08
✎
15:45
|
(7) да они шутят
|
|||
9
Defender aka LINN
21.02.08
✎
15:48
|
(7) Опыт написания запросов в цикле - опыт неинтересный, буквально сегодня этим занимался :)
|
|||
10
Adre
21.02.08
✎
15:55
|
(9)можешь дать схематичное описание
чтоб направление почувствовать |
|||
11
ЗлобнийМальчик
21.02.08
✎
15:58
|
хммм, результат запроса передается в тот же самый запрос до тех пор , пока находятся элементы, для которых выполняется некое условие (в Вашем случае - пока есть узлы)
|
|||
12
Romas81
21.02.08
✎
17:06
|
тут рекурсией попахивает.... пишешь функцию параметр у которой например таблица знчений, в теле функции запрос, получаешь выборку... бежишь по ней, если не узел суешь в ТЗ, иначе вызываешь опять эту же функцию с параметром ТЗ и этим узлом. ну думаю принцип понятен. при первом запуске функции в качестве второго параметра мона передать Неопределено и первый запрос оставить как у тебя, ну а дальше в запрос добавить условие... и т.д.
|
|||
13
Romas81
21.02.08
✎
17:09
|
а запрос рекурсивный я думаю ты врятли напишешь....
|
|||
14
КуплюКровать
21.02.08
✎
17:15
|
Афтару бы посмотреть обработку "Конструктор спецификаций" и не изобретать велосипед
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |