Имя: Пароль:
1C
1С v8
как передать в запрос список значений
,
0 MrZLO
 
22.01.15
08:37
Здрасте! Через форму документа заказ покупателю передаю через дополнительное свойство список значений в документ заказ поставщику

передача параметров:

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
               |    ЗаказПокупателяТовары.Поставщик КАК Поставщик
               |ИЗ
               |    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
               |ГДЕ
               |    ЗаказПокупателяТовары.Ссылка = &ЗаказПокупателя
               |    И ЗаказПокупателяТовары.Поставщик <> &ПустоеЗначение";


Запрос.УстановитьПараметр("ЗаказПокупателя", ЗаказПокупателя);
Запрос.УстановитьПараметр("ПустоеЗначение", Справочники.Контрагенты.ПустаяСсылка());
              
ТЗ = Запрос.Выполнить().Выгрузить();

Список = Новый СписокЗначений;

Список.ЗагрузитьЗначения(ТЗ.ВыгрузитьКолонку("Поставщик"));
ЭлементыФормы.СписокПоставщиков.Значение = Список;
    
КонецПроцедуры


Процедура ОсновныеДействияФормыСоздатьЗаказПоставщику(Кнопка)

ЭтаФорма.Закрыть();    

ЗаказПоставщику = Документы.ЗаказПоставщику.СоздатьДокумент();
ЗаказПоставщику.ДокументОснование = ЗаказПокупателя.Ссылка;
ЗаказПоставщику.ДополнительныеСвойства.Вставить("СписокПоставщиков", СписокПоставщиков);

ЗаказПоставщику.Заполнить(ЗаказПокупателя.Ссылка);     

Форма = ЗаказПоставщику.ПолучитьФорму();
Форма.Открыть();

КонецПроцедуры

в документе заказ поставщику при формировании запроса нужно этот список значений установить в параметр запроса, но запрос ничего не выводит, хотя в отладчике список значений передается и запрос верный 100%

кусок из запроса:

    |ГДЕ
    |    ЗаказПокупателяТовары.Ссылка = &Основание
    |    И ЗаказПокупателяТовары.Поставщик.Ссылка В(&СписокПоставщиков)";


    // вот так не работает
Запрос.УстановитьПараметр("СписокПоставщиков",ЭтотОбъект.ДополнительныеСвойства.Свойство("СписокПоставщиков"));

// для эксперимента вот так все нормально    
Запрос.УстановитьПараметр("СписокПоставщиков",Справочники.Контрагенты.НайтиПоКоду("000000081"));
1 butterbean
 
22.01.15
08:40
твое Свойство("") возвращает Истина :-)
2 чувак
 
22.01.15
08:41
а так?

|ГДЕ
    |    ЗаказПокупателяТовары.Ссылка = &Основание
    |    И ЗаказПокупателяТовары.Поставщик В(&СписокПоставщиков)";
3 MrZLO
 
22.01.15
08:44
(1) да ща уже вижу :)
4 MrZLO
 
22.01.15
08:44
скажите как вытащить значение из доп свойсива :)
5 butterbean
 
22.01.15
08:45
(4) это же просто структура :-)
ЭтотОбъект.ДополнительныеСвойства.СписокПоставщиков
6 MrZLO
 
22.01.15
08:46
(5) спасибо!!! :)))
7 чувак
 
22.01.15
08:50
(6) И на заметку. Все таки сделай как в (2). Так кошерно
8 nordbox
 
22.01.15
08:57
(0) поправь код ЧУВАКА немного
ЗаказПокупателяТовары.Поставщик.Ссылка В ИЕРАРХИИ (&СписокПоставщиков)";
9 чувак
 
22.01.15
08:58
(8) Нафига ссылка когда есть само поле "Поставщик"?
10 nordbox
 
22.01.15
09:08
Чувак, я так думаю что это Реквизит формы тип Список значений содержащий список Поставщиков.
Только  непонятно зачем такие танцы?
11 чувак
 
22.01.15
09:10
(10) Если у ссылочного поля в условии использовать реквизит, тогда происходит неявное соединение с таблицой справочника контрагенты, а это снижает производительность. Ну для небольших таблиц некритично конечно.
12 nordbox
 
22.01.15
09:14
(11) Ну в данном случае в чем у тебя критичность ?
Нафига оптимизировать то чего не нужно?
то что у тебя будет запрос выполняться на тысячные доли секунды быстрее ?
13 чувак
 
22.01.15
09:15
(12) Это просто на замтеку