Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Отбор по списку значений в построителе запроса

Отбор по списку значений в построителе запроса
Я
   1snik_d
 
10.06.21 - 14:33
Всем привет! Никак не получается организовать отбор по списку значений в построителе запроса.
    
ПостроительЗапроса.Текст =
        "ВЫБРАТЬ
        |    ОтчетКомитентуОПродажах.Ссылка КАК Документ,
        |    ОтчетКомитентуОПродажах.Контрагент КАК Контрагент,
        |    КонтрагентыКонтактнаяИнформация.Представление КАК СписокЭлектронныхАдресов
        |ИЗ
        |    Документ.ОтчетКомитентуОПродажах КАК ОтчетКомитентуОПродажах
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
        |        ПО ОтчетКомитентуОПродажах.Контрагент = КонтрагентыКонтактнаяИнформация.Ссылка
        |            И (КонтрагентыКонтактнаяИнформация.Тип = &ТипКонтактнойИнформации)
        |            И (КонтрагентыКонтактнаяИнформация.Вид = &ВидКонтактнойИнформации)
        |ГДЕ
        |    ОтчетКомитентуОПродажах.Дата МЕЖДУ &НачалоПериода И &КонецПериода
        |{ГДЕ
        |    ОтчетКомитентуОПродажах.Контрагент.*}";
    
    Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
        ОтборПоКонтрагенту = ПостроительЗапроса.Отбор.Добавить("Контрагент");
        ОтборПоКонтрагенту.Значение = Объект.Контрагент;
        ОтборПоКонтрагенту.ВидСравнения = ВидСравнения.ВСписке;
        ОтборПоКонтрагенту.Использование = Истина;
    КонецЕсли;

Ругается на неверный тип в отборе. Как это сделать?
   1snik_d
 
1 - 10.06.21 - 14:34
Да, "Контрагент" - Это реквизит обработки с типом "СписокЗначений"
   Timon1405
 
2 - 10.06.21 - 14:45
ОтборПоКонтрагенту.Значение = Объект.Контрагент.ВыгрузитьЗначения();
   1snik_d
 
3 - 10.06.21 - 14:46
(2) Так тоже ругается на тип значения. Он ждет Тип значения "КонтрагентСсылка", а я не пойму как ему список пихнуть
   1snik_d
 
4 - 10.06.21 - 14:47
Если передать конкретного контрагента, то все отрабатывает правильно
   youalex
 
5 - 10.06.21 - 14:47
Местами попробуй поменять строчки с ВидСравнения и Значение 
(вроде был такой прикол)
   1snik_d
 
6 - 10.06.21 - 14:49
(5) Бл..ть, так работает. Огромное мерси!
   ДенисЧ
 
7 - 10.06.21 - 14:49
"ОтборПоКонтрагенту.Значение = Объект.Контрагент;
ОтборПоКонтрагенту.ВидСравнения = ВидСравнения.ВСписке;
"

Абрам Моисеевич, Вы или трусики наденьте, или крестик снимите...

В смысле - если указываешь "в списке", Так и передеавай список...
   1snik_d
 
8 - 10.06.21 - 14:50
(7) Так и передаю, там прикол в порядке строк в коде
   Малыш Джон
 
9 - 10.06.21 - 15:01
(6) По умолчанию ВидСравнения  -  это ВидСравнения.Равно, поэтому когда туда передается список он преобразуется к единичному значению и когда потом устанавливается ВидСравнения.ВСписке происходит такая ошибка. Поэтому всегда надо сначала ВидСравнения устнавливать, а потом Значение.
Это не только в построителе запроса, это вообще везде, где используется Отбор.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.