Имя: Пароль:
1C
1С v8
Меняющийся параметр запроса
0 Vanilla26
 
15.05.12
16:43
Помогите с запросом!
параметр устанавливается последний, в результате только последняя запись выборки..не могу вдуплить

   Для i=0 По МассивСсылок.Количество()-1 Цикл
   Запрос.УстановитьПараметр("СсылкаНаДокумент",МассивСсылок[i]);
   
   
   Если Не i=0 Тогда
       Запрос.Текст=Запрос.Текст+";";
   КонецЕсли;
    Запрос.Текст=Запрос.Текст+"
   |ВЫБРАТЬ
   |Дата,
   |Номер,
   |ПричинаНетрудоспособности КАК Причина,
   |ДатаНачала,
   |ДатаОкончания,
   |Сотрудник,
   |Сотрудник.Код КАК ТабельныйНомер,
   |Сотрудник.ТекущееПодразделениеОрганизации КАК Подразделение,
   |Сотрудник.ТекущаяДолжностьОрганизации КАК Должность
   |ИЗ
   |Документ.НачислениеПоБольничномуЛисту
   |ГДЕ
   |Ссылка = &СсылкаНаДокумент
   |";
   
       
   КонецЦикла;    
   Выборка = Запрос.Выполнить().Выбрать();
1 ASU_Diamond
 
15.05.12
16:46
а если использовать:
   |ГДЕ
   |Ссылка В &СписокДокументов
?
2 Ц_У
 
15.05.12
16:47
(0) не понимаю смысла конструкции
3 ASU_Diamond
 
15.05.12
16:47
а так ты в цикле один и тот же параметр перезаписываешь
4 spu79
 
15.05.12
16:47
|Ссылка В (&СсылкаНаДокумент)
5 ASU_Diamond
 
15.05.12
16:47
(2) похоже что ТС хотел запрос по нескольким документам
6 Mort
 
15.05.12
16:47
(1)(4) Боюсь автору это не поможет особо.
7 Mort
 
15.05.12
16:48
Нужно ещё объяснить что в параметр весь массив ссылок передавать надо.
8 Ц_У
 
15.05.12
16:50
(0)
1. массив ссылок есть, его и используй сразу в отборе в запросе
2. вот так примерно:
Запрос= Новый Запрос;
Запрос.Текст="
   |ВЫБРАТЬ
   |Дата,
   |Номер,
   |ПричинаНетрудоспособности КАК Причина,
   |ДатаНачала,
   |ДатаОкончания,
   |Сотрудник,
   |Сотрудник.Код КАК ТабельныйНомер,
   |Сотрудник.ТекущееПодразделениеОрганизации КАК Подразделение,
   |Сотрудник.ТекущаяДолжностьОрганизации КАК Должность
   |ИЗ
   |Документ.НачислениеПоБольничномуЛисту
   |ГДЕ
   |Ссылка В (&МассивСсылок)
   |";
   Запрос.УстановитьПараметр("МассивСсылок",МассивСсылок);
   Выборка = Запрос.Выполнить().Выбрать();
9 UFedor
 
15.05.12
16:50
либо запрос нужно включить в цикл, либо использовать массив (список значений) как параметр запроса. наверное лучше второе
10 andrewks
 
15.05.12
16:50
Для i=0 По МассивСсылок.Количество()-1 Цикл
   Запрос.УстановитьПараметр("СсылкаНаДокумент",МассивСсылок[i]);

это пример гКодинга?
11 Vanilla26
 
15.05.12
16:54
Ну я то уже понял что перезаписываю, а как сделать?
может воткнуть Выборка = Запрос.Выполнить() в цикл, а как потом туда ещё дописывать значения? (извините за ламерство если что, тока начинаю 1с изучать)
12 Mort
 
15.05.12
16:57
(11) Читай (8) до полного просветления.
13 ASU_Diamond
 
15.05.12
16:57
(9) есть ещё такой вариант:
   Для i=0 По МассивСсылок.Количество()-1 Цикл
   Запрос.УстановитьПараметр("СсылкаНаДокумент"+Формат(i,ЧислоВСтроку),МассивСсылок[i]);
   
   
   Если Не i=0 Тогда
       Запрос.Текст=Запрос.Текст+";";
   КонецЕсли;
     Запрос.Текст=Запрос.Текст+"
   |ВЫБРАТЬ
   |Дата,
   |Номер,
   |ПричинаНетрудоспособности КАК Причина,
   |ДатаНачала,
   |ДатаОкончания,
   |Сотрудник,
   |Сотрудник.Код КАК ТабельныйНомер,
   |Сотрудник.ТекущееПодразделениеОрганизации КАК Подразделение,
   |Сотрудник.ТекущаяДолжностьОрганизации КАК Должность
   |ИЗ
   |Документ.НачислениеПоБольничномуЛисту
   |ГДЕ
   |Ссылка = &СсылкаНаДокумент"+Формат(i,ЧислоВСтроку)+"
   |";
   
       
   КонецЦикла;
14 Vanilla26
 
15.05.12
17:00
О спасибо великие гуру:) по 8 сделал
Закон Брукера: Даже маленькая практика стоит большой теории.