Возникла странная ситуация. Вроде делаю всё правильно, но не работает.
Есть документы "Событие" с реквизитом "Контрагент". Контрагент может быть как справочником "Контрагенты", так и справочником "Транспортные компании". В справочнике "Контрагенты" есть табличная часть "Группа доступа", в которой указываются пользователи, имеющие право на чтение.
Необходимо в форме списка документа "Событие" сделать отбор для чтения. Условие такое:
1. Если "Контрагент" - это "Транспортная компания", то выводим все документы без всяких условий.
2. Если "Контрагент" - это справочник "Контрагенты", то выводим только те документы, в которых у "Контрагента" в табличной части "Группа доступа" указан текущий "Пользователь".
Я написал запрос так:
"Событие ГДЕ ВЫБОР
КОГДА Событие.Контрагент Ссылка Справочник.ТранспортныеКомпании
ТОГДА ИСТИНА
ИНАЧЕ ВЫРАЗИТЬ(Событие.Контрагент.Ссылка КАК Справочник.Контрагенты).ГруппаДоступа.Пользователь = &ТекПользователь
КОНЕЦ"
За три дня перепробовал море вариантов, но подошёл только самый странный. Пишу для будущего поколения.
1) Создать вложенный запрос, в котором сделать выборку из справочника "Контрагенты". Нужны два поля "Пользователь" и "Ссылка".
2) Сделать левую связь с событием по полю "Контрагент".
3) Добавить такое вот условие "ВЫБОР
КОГДА Событие.Контрагент ССЫЛКА Справочник.ТранспортныеКомпании
ТОГДА ИСТИНА
ИНАЧЕ ВложенныйЗапрос.Пользователь = &ТекПользователь
КОНЕЦ".