Имя: Пароль:
1C
 
как написать рекурсивный запрос
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
Афтару бы посмотреть обработку "Конструктор спецификаций" и не изобретать велосипед