|
|
Отбор по списку значений в построителе запроса |
☑ |
|
0
1snik_d
10.06.21
✎
14:33
|
Всем привет! Никак не получается организовать отбор по списку значений в построителе запроса.
ПостроительЗапроса.Текст =
"ВЫБРАТЬ
| ОтчетКомитентуОПродажах.Ссылка КАК Документ,
| ОтчетКомитентуОПродажах.Контрагент КАК Контрагент,
| КонтрагентыКонтактнаяИнформация.Представление КАК СписокЭлектронныхАдресов
|ИЗ
| Документ.ОтчетКомитентуОПродажах КАК ОтчетКомитентуОПродажах
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
| ПО ОтчетКомитентуОПродажах.Контрагент = КонтрагентыКонтактнаяИнформация.Ссылка
| И (КонтрагентыКонтактнаяИнформация.Тип = &ТипКонтактнойИнформации)
| И (КонтрагентыКонтактнаяИнформация.Вид = &ВидКонтактнойИнформации)
|ГДЕ
| ОтчетКомитентуОПродажах.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|{ГДЕ
| ОтчетКомитентуОПродажах.Контрагент.*}";
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ОтборПоКонтрагенту = ПостроительЗапроса.Отбор.Добавить("Контрагент");
ОтборПоКонтрагенту.Значение = Объект.Контрагент;
ОтборПоКонтрагенту.ВидСравнения = ВидСравнения.ВСписке;
ОтборПоКонтрагенту.Использование = Истина;
КонецЕсли;
Ругается на неверный тип в отборе. Как это сделать?
|
|
|
1
1snik_d
10.06.21
✎
14:34
|
Да, "Контрагент" - Это реквизит обработки с типом "СписокЗначений"
|
|
|
2
Timon1405
10.06.21
✎
14:45
|
ОтборПоКонтрагенту.Значение = Объект.Контрагент.ВыгрузитьЗначения();
|
|
|
3
1snik_d
10.06.21
✎
14:46
|
(2) Так тоже ругается на тип значения. Он ждет Тип значения "КонтрагентСсылка", а я не пойму как ему список пихнуть
|
|
|
4
1snik_d
10.06.21
✎
14:47
|
Если передать конкретного контрагента, то все отрабатывает правильно
|
|
|
5
youalex
10.06.21
✎
14:47
|
Местами попробуй поменять строчки с ВидСравнения и Значение
(вроде был такой прикол)
|
|
|
6
1snik_d
10.06.21
✎
14:49
|
(5) Бл..ть, так работает. Огромное мерси!
|
|
|
7
ДенисЧ
10.06.21
✎
14:49
|
"ОтборПоКонтрагенту.Значение = Объект.Контрагент;
ОтборПоКонтрагенту.ВидСравнения = ВидСравнения.ВСписке;
"
Абрам Моисеевич, Вы или трусики наденьте, или крестик снимите...
В смысле - если указываешь "в списке", Так и передеавай список...
|
|
|
8
1snik_d
10.06.21
✎
14:50
|
(7) Так и передаю, там прикол в порядке строк в коде
|
|
|
9
Малыш Джон
10.06.21
✎
15:01
|
(6) По умолчанию ВидСравнения - это ВидСравнения.Равно, поэтому когда туда передается список он преобразуется к единичному значению и когда потом устанавливается ВидСравнения.ВСписке происходит такая ошибка. Поэтому всегда надо сначала ВидСравнения устнавливать, а потом Значение.
Это не только в построителе запроса, это вообще везде, где используется Отбор.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший