Имя: Пароль:
1C
1С v8
Выполнить запрос в цикле
, ,
0 BUMBUM
 
05.11.12
15:33
прошу помощи, т.к. уже 3 день и !?!?

Есть запрос
ВЫБРАТЬ
   ВЫБОР
       КОГДА ДокУЛ2.Номенклатура ЕСТЬ NULL
           ТОГДА ЗаказДокУЛ1.Номенклатура
       ИНАЧЕ ДокУЛ2.Номенклатура
   КОНЕЦ КАК Номенклатура,
   ЗаказДокУЛ1.КоличествоЗаказ,
   ЗаказДокУЛ1.КоличествоУЛ1,
   ДокУЛ2.КоличествоУЛ2
ИЗ
   ЗаказДокУЛ1 КАК ЗаказДокУЛ1
       ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           AV_УпаковочныйЛистОборудование.Номенклатура КАК Номенклатура,
           СУММА(AV_УпаковочныйЛистОборудование.КоличествоУЛ) КАК КоличествоУЛ2
       ИЗ
           Документ.AV_УпаковочныйЛист.Оборудование КАК AV_УпаковочныйЛистОборудование
       ГДЕ
           AV_УпаковочныйЛистОборудование.Ссылка = &СсылкаУЛ2
       
       СГРУППИРОВАТЬ ПО
           AV_УпаковочныйЛистОборудование.Номенклатура) КАК ДокУЛ2
       ПО ЗаказДокУЛ1.Номенклатура = ДокУЛ2.Номенклатура
1 Feanorko
 
05.11.12
15:34
Выдыхай
2 Feanorko
 
05.11.12
15:35
Все выходные мучаться с запросом - это жестоко
3 shuhard
 
05.11.12
15:35
(0)[ т.к. уже 3 день]
женщины 9 месяцев вынаживают и ни чего
4 BUMBUM
 
05.11.12
15:35
Это совет не дослушав вопрос(((
5 BUMBUM
 
05.11.12
15:35
))
6 BUMBUM
 
05.11.12
15:36
Да дело не в запросе не получается это все в цикл запихнуть
7 GROOVY
 
модератор
05.11.12
15:36
Попробуй сформулировать вопрос лучше.
8 GROOVY
 
модератор
05.11.12
15:36
Запрос в цикле это жесть.
9 BUMBUM
 
05.11.12
15:36
К = 1;
   КоличествоУЛ = ВыборкаКолУЛ.Количество();
   
   Пока ВыборкаКолУЛ.Следующий() Цикл
       
       ИмяТабл = "Табл"+Строка(К);
       
       Если К = КоличествоУЛ Тогда
           УсловиеПомешения = " ";
       Иначе  
           УсловиеПомешения = "ПОМЕСТИТЬ "+ИмяТабл;
       КонецЕсли;
       
       Текст = "ВЫБРАТЬ
       |КОГДА ДокУЛ.Номенклатура Есть NULL
       |ТОГДА Табл" + Строка(К-1)+ ".Номенклатура
       |ИНАЧЕ ДокУЛ.Номенклатура КОНЕЦ КАК Номенклатура,
       |Табл" + Строка(К-1)+".КоличествоЗаказ";
       М = 1;
       Пока М <= К-1 Цикл
           Текст1 = Текст1+", Табл"+ Строка(К-1)+".КоличествоУЛ"+Строка(М);
       КонецЦикла;
       Текст1 = Текст1 + ", ДокУЛ.КоличествоУЛ" + Строка(К)+УсловиеПомешения+
       Текст1 =  ", ДокУЛ.КоличествоУЛ" + Строка(К)+УсловиеПомешения+
       
       "ИЗ Табл" + Строка(К-1)+" КАК  Табл" +Строка(К-1)+
       " ПОЛНОЕ СОЕДИНЕНИЕ
       |ВЫБРАТЬ AV_УпаковочныйЛистОборудование.Номенклатура КАК Номенклатура,
       |СУММА(AV_УпаковочныйЛистОборудование.КоличествоУЛ) КАК КоличествоУЛ3
       |ИЗ
       |    Документ.AV_УпаковочныйЛист.Оборудование КАК AV_УпаковочныйЛистОборудование
       |ГДЕ
       |AV_УпаковочныйЛистОборудование.Ссылка = &Ссылка"+ К +"
       |        СГРУППИРОВАТЬ ПО
       |    AV_УпаковочныйЛистОборудование.Номенклатура) КАК ДокУЛ
       |    Табл"+Строка(К-1)+".Номенклатура = ДокУЛ.Номенклатура";
                   
       С = 1;
       ВыборкаКолУЛ.Сбросить();
       Пока ВыборкаКолУЛ.Следующий() Цикл
           Запрос.УстановитьПараметр("Ссылка" + С, ВыборкаКолУЛ.УпаковочныйЛист);
           С = С + 1;
       КонецЦикла;
       К = К + 1;
       M = М + 1;
       
   Результат = Запрос.Выполнить();
10 BUMBUM
 
05.11.12
15:37
Пытаюсь )), но уже столько ответов ))
11 GROOVY
 
05.11.12
15:40
Я боюсь представить что происходит с этим кодом... Запрос в цикле по результату другого запроса...

Тут можно посоветовать переосмыслить задачу, подучить запросы и переписать все нафиг.
12 AET
 
05.11.12
15:42
(9) страшно..., заодно к (11) добавлю про ИменаПеременных и  СтрЗаменить()
13 BUMBUM
 
05.11.12
15:48
Хорощо есть док. «Заказ поставщику», ссылка на Заказ есть в документе «ДокУЛ»
Задача. Пока выбери все документы где есть ЗАКАЗ(Ссылка)
ЗаказПоставщику.Номеклатура
ЗаказПоставщикуКол.Количество
И
ДокУЛ.Количество1
ДокУЛ.Количество2
ДокУЛ.Количество3
……
ДокУЛ.КоличествоN
14 BUMBUM
 
05.11.12
15:50
Ребят хорошо, Вы все Гениальны (сразу такими и родились).
15 Feanorko
 
05.11.12
15:51
(13) ты толком обясни, чего хочешь. Выбрать все ДокУЛ со ссылкой на определенный заказ поставщику?
16 BUMBUM
 
05.11.12
15:51
БЛА БЛА БЛА на отлично умеете!
17 zladenuw
 
05.11.12
15:51
(13) в документе УЛ это реквизит документа или реквизит ТЧ ?
18 kiruha
 
05.11.12
15:51
(11)
Я не вижу цикла
Вижу
Пока ВыборкаКолУЛ.Следующий()
потом запрос
потом ВыборкаКолУЛ.Сбросить()
19 Feanorko
 
05.11.12
15:51
(16) не только "БЛА БЛА БЛА" :)
20 AET
 
05.11.12
15:52
(13) такую задачу я не могу решить, честно
21 BUMBUM
 
05.11.12
15:52
ТЧ
22 zladenuw
 
05.11.12
15:56
ВЫБРАТЬ
   Документ1ТабличнаяЧасть1.Ссылка
ИЗ
   Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.Документ2 КАК Документ2
       ПО Документ1ТабличнаяЧасть1.Реквизит1 = Документ2.Ссылка
ГДЕ
   Документ2.Ссылка = &Ссылка

как то так.
23 GROOVY
 
05.11.12
15:56
(13) 5 раз перечитал, так и не понял что нужно выбрать.

Все заказы которые встречаются в ДокУЛ или все ДокУЛ в которых встречается Заказ?
24 BUMBUM
 
05.11.12
15:57
Есть
ДокументУЛ1(реквизит «Заказ» -Заказ№1) ТЧ (Реквизит Номен; Реквизит КоличествоУЛ)
ДокументУЛ2(реквизит «Заказ» -Заказ№1) (Реквизит Номен; Реквизит КоличествоУЛ)
ДокументУЛ3(реквизит «Заказ» - Заказ№1) (Реквизит Номен; Реквизит КоличествоУЛ)


Есть
Документ Заказ№1 ТЧ(Реквизит Номен; Реквизит Количество))

Так вот нужно получить табл
Номенклатура/КоличествоЗаказ/ КоличествоУЛ/ КоличествоУЛ/ ……….
25 zladenuw
 
05.11.12
15:59
(24) смотри (22) получаешь. документ1 УЛ, документ2 заказ. ну а дальше сам.
26 GROOVY
 
05.11.12
15:59
ДокументУл1 2 3 - это разные виды документов? Или просто разные экземпляры одного и того-же вида (номер разный).
27 КУНГ ФУ 1С
 
05.11.12
16:01
(24) по каждому виду документа сделай вложенный запрос затем все нафин объеденением зафигарь и все.
28 BUMBUM
 
05.11.12
16:05
разные экземпляры одного и того-же вида (номер разный).
29 GROOVY
 
05.11.12
16:06
(28) Тогда см (25)
30 BUMBUM
 
05.11.12
16:11
спс
31 Feanorko
 
05.11.12
16:13
(30) спс в кружке не булькает :)