3) Не получается работать с отборами типа "ВСписке" - не возвращает значений.
Вот такой запрос (запрос не оптимален, знаю. Привожу для большей простоты), например, гарантированно возвращает два лицевых счета:
пТекстЗапроса = "
| select id from $Справочник.ЛицевыеСчета ЛС where $ЛС.Адрес in (
|select Адреса.id as Код
|from $Справочник.Адреса Адреса
| , $Справочник.Дома Дома
|where Дома.id = $Адреса.Дом
| and $Дома.Номер = :Дом_Отбор
| and $Адреса.Квартира = :Квартира_Отбор)";
пЗапрос.УстановитьТекстовыйПараметр("Дом_Отбор", СокрЛП(рфДом));
пЗапрос.УстановитьТекстовыйПараметр("Квартира_Отбор", СокрЛП(рфКвартира));
пСписокЗначенийАдреса = СоздатьОбъект("СписокЗначений");
пЗапрос.ВыполнитьИнструкцию(пТекстЗапроса, пСписокЗначенийАдреса);
вхОтбор = пДанные.Отбор.ТекущийЭлемент;
вхОтбор.ВидСравнения = "ВСписке";
вхОтбор.Значение = пСписокЗначенийАдреса;
вхОтбор.Использование = 1;
Отбор создается, значения его добавляются. Но ничего не возвращается.
Если вручную, а не программно, добавить значения для отбора в его окне - то все работает.
В обоих случаях генерируется такой запрос:
select top 20
sc1202.descr as Наименование,
sc1202.row_id as НомерСтрокиСправочника,
sc1202.id as ТекущийЭлемент,
case when sc1202.ismark = 1 then 1 else 0 end as ПометкаУдаления,
0 as ЭтоГруппа,
case when sc1202.ismark = 1 then 3 else 2 end as Пиктограмма,
sc1202.code as Код,
sc1202.SP3329 as Организация_Владелец,
sc1202.SP3352 as Организация_Управляющая,
sc1202.SP1204 as Адрес_Сортировка,
sc1202.SP3327 as Населенный_Пункт,
sc1202.SP1211 as Улица,
sc1202.SP1212 as Дом,
sc1202.SP3336 as Архивный,
sc1202.SP3330 as Адрес,
sc1202.SP1209 as Собственник
from SC1202 as sc1202 (nolock)
where sc1202.ID in (select val from #f_ТекущийЭлемент)
order by sc1202.descr, sc1202.row_id
Если в нем заменить select val from #f_ТекущийЭлемент на то, что возвращает мой запрос, то все тоже работает.
Так и не поняла, в чем дело.
ЗЫ: если речь об отборе не по id, а например по коду, то отбор тоже работает...