Имя: Пароль:
1C
1C 7.7
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
(5) Вот так надо делать:

https://www.1cpp.ru/forum/YaBB.pl?num=1148038411/4#4
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) Спасибо