Имя: Пароль:
1C
 
Построитель запроса, как правильно добавить отбор
0 r2d24
 
09.07.15
10:58
Второй день с построителем имею дело. Вчера открывал тему, это мне не помогла.
Нужно в отбор добавить несколько строк номенклатуры
Все что нашел в интернете, я попытался выразить в коде:

ПостроительЗапросаФильтрТоварыАссортимент = новый ПостроительОтчета;
    ПостроительЗапросаФильтрТоварыАссортимент.Текст = "";
    ПостроительЗапросаФильтрТоварыАссортимент.Выполнить();
    //Здесь, мне и нужно как нибудь добавить отбор, спискаЗначений, здесь никакого нет
    //    в первый раз номенклатура в отбор добавляется
    ПостроительЗапросаФильтрТоварыАссортимент.Отбор.Добавить("Номенклатура");
    ПостроительЗапросаФильтрТоварыАссортимент.Отбор.Номенклатура.Значение = Справочники.Номенклатура.НайтиПоКоду("ЯТ055585");
    ПостроительЗапросаФильтрТоварыАссортимент.Отбор.Номенклатура.ВидСравнения = ВидСравнения.ВСписке;
    ПостроительЗапросаФильтрТоварыАссортимент.Отбор.Номенклатура.Использование = Истина;
    
    //  во второй раз ошибка при установки значения атрибута контекста
    ПостроительЗапросаФильтрТоварыАссортимент.Отбор.Добавить("Номенклатура");
    ПостроительЗапросаФильтрТоварыАссортимент.Отбор.Номенклатура.Значение = Справочники.Номенклатура.НайтиПоКоду("ЯТ055585"); //на этой строке ошибка
    ПостроительЗапросаФильтрТоварыАссортимент.Отбор.Номенклатура.ВидСравнения = ВидСравнения.ВСписке;
    ПостроительЗапросаФильтрТоварыАссортимент.Отбор.Номенклатура.Использование = Истина;
    //
    ТаблицаАссортимента=ПостроительЗапросаФильтрТоварыАссортимент.Результат.Выгрузить();
    МассивНоменклатуры=ТаблицаАссортимента.ВыгрузитьКолонку("Номенклатура");
1 Fragster
 
гуру
09.07.15
11:01
Элемент = .Отбор.Добавить("
Элемент.ВидСравнения = .ВСписке
Элемент.Значение = Список
Элемент.Использование = Истина
2 Ёпрст
 
09.07.15
11:05
(0) тебе же вчера дали ответ, что там может быть неясного ?!

ЗначенияОтбора = Новый СписокЗначений;
ЗначенияОтбора.ДОбавить(Справочники.Номенклатура.НайтиПоКоду("ЯТ055585"));
ЗначенияОтбора.ДОбавить(Справочники.Номенклатура.НайтиПоКоду("Вася"));

ЭлементОтбора = ПостроительЗапросаФильтрТоварыАссортимент.Отбор.Добавить("Номенклатура");
ЭлементОтбора.ВидСравнения = ВидыСравнения.ВСписке;
ЭлементОтбора.Значение = ЗначенияОтбора;
ЭлементОтбора.Использование = Истина;
3 r2d24
 
09.07.15
11:05
(1)
Элемент = ПостроительЗапросаФильтрТоварыАссортимент.Отбор.Добавить("Номенклатура");
    Элемент.ВидСравнения = ВидСравнения.ВСписке;
    Элемент.Значение = Список;
    Элемент.Использование = Истина;

Списка у меня в коде нету, он не используется. Не знаю что с ним делать?
4 Fragster
 
гуру
09.07.15
11:12
устрани недостаток "списка у меня в коде нету"
5 r2d24
 
09.07.15
11:12
(2) Это не устанавливает значение отбора, выводится пустой результат. Отладчик:
http://www.image123.net/r728awt7thlmpic.html
6 Fragster
 
гуру
09.07.15
11:13
(5) а сфига ли у тебя ДВА отбора по полю номенклатура?
7 r2d24
 
09.07.15
11:14
(6) точно, спасибо. До этого я ставил галочку в "номенклатура" в отборе.
8 Ёпрст
 
09.07.15
11:15
(5) весь код покажи
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший