|
v7: ODBCRecordSet - проверка реквизита в запросе на уложенный список, если без вида
| ☑ |
0
Chai Nic
02.03.22
✎
10:49
|
Есть реквизит объекта, который просто "Справочник", без указания вида. Но он может быть заполнен в том числе значениями определенного справочника.
Хочу в запросе выбрать объекты, в которых этот реквизит входит в заданный список.
Пробую создать временную таблицу через УложитьСписокОбъектов и далее по учебнику "IN (SELECT Val FROM ...)". Однако это условие на вхождение в уложенный список не срабатывает, если оно накладывается на реквизит "Справочник" без указания вида.
Подскажите, как лучше решить эту проблему. Перебор результатов снаружи устраивать не хочется.
|
|
1
Андрей_Андреич
naïve
02.03.22
✎
11:04
|
Так ты когда укладываешь список значений в таблицу, тип справочника указываешь?
|
|
2
Sserj
02.03.22
✎
11:05
|
На MSSQL было бы как то так, за точность синтаксиса не ручаюсь, пишу без проверки по памяти:
select
...
from
...
left join #уложеннаяТаблица as фильтр
on left(РеквизитСправочника, 4) = 'идВидаСправочникаЧерезМетаданные' and substring(РеквизитСправочника, 4, 9) = фильтр.val
where
фильтр.val is not null
|
|
3
Chai Nic
02.03.22
✎
11:05
|
(2) Понял, спасибо
|
|
4
Sserj
02.03.22
✎
11:07
|
И кстати помоему было и УложитьСписокОбъектов13. Если он есть то городить ничего не нужно, IN сработает.
|
|
5
Chai Nic
02.03.22
✎
11:14
|
(4) С УложитьСписокОбъектов13 не работает авторазвертка групп в элементы
|
|
6
Salimbek
02.03.22
✎
12:59
|
|
|
7
АгентБезопасной Нацио
02.03.22
✎
20:06
|
(5) в "IN (SELECT Val FROM ...) "делай так:
IN (SELECT $ВидСправочника36.<ВидСправочника> + Val FROM #ВременнаяТаблицаСправочника)
Ну или если проверяешь на вхождение в выборку из нескольких справочников
IN (SELECT $ВидСправочника36.<ПервыйВидСправочника> + Val FROM #ВременнаяТаблицаСправочникаПервогоВида UNION ALL SELECT $ВидСправочника36.<ВторойВидСправочника> + Val FROM #ВременнаяТаблицаСправочникаВторогоВида)
|
|
8
Chai Nic
03.03.22
✎
10:29
|
(7) Спасибо
|
|