Задача: сделать так, чтобы пользователь мог выбрать элемент из списка выбора, но при этом не мог открыть элемент для просмотра.
В старые добрые времена такая задача выполнялась с помощью запрета на открытие формы элемента для пользователя, у которого нет соответствующего разрешения, а разрешения, назначенные пользователям, хранились в в регистре сведений.
Однако, времена меняются, горизонты расширяются, поэтому попробуем получить нужный результат с помощью системы ограничения доступа RLS.
Имеем программу 1С: ERP 2, в которой нас интересует, например, документ "Заявка на расходование денежных средств". Назначим пользователю такие права доступа, чтобы он, создавая заявку на расходование денежных средств с типом операции "Выдача ДС подотчётнику", мог для реквизита "Подотчётное лицо" выбрать физическое лицо из списка выбора, но не мог открыть элемент для просмотра.
В типовой конфигурации ERP есть несколько ролей с правом чтения справочника "Физические лица", но предустановленные в них ограничения доступа не позволяют настроить систему так, как требует задача. Поэтому создадим новую роль и назовём её, к примеру, "ЧтениеФизическихЛицБезПросмотра".
Настроим для созданной роли доступ к справочнику "Физические лица".
Первой приходит мысль установить разрешение "Чтение" и не устанавливать разрешение "Просмотр". Воплощение мысли в жизнь, сохранение конфигурации, запуск в режиме "Предприятие", обновление параметров ограничения доступа, проверка... Увы, при такой настройке система не позволяет даже открыть список выбора. Ошибка "У пользователя недостаточно прав для работы с базой даных".
Следующая мысль – установить права "Чтение", "Просмотр", и для права "Чтение" настроить ограничение доступа RLS таким образом, чтобы поля "Ссылка" и"Наименование" были доступны, а все остальные нет. Делаем:
Условием "Где Истина" предоставляем доступ к полям "Ссылка" и "Наименование", а ко всем остальным закрываем доступ условием "Где Ложь".
Проверяем работу ограничения и видим, что прогресс есть, но не совсем достаточный: форма выбора открывается, однако она пуста.
Переходим к следующей идее. Раз уж не получается скрыть все поля, а показать только разрешённые, то попробуем пойти от противного — запретим только те поля, которые не должны быть доступны пользователю:
Снова проверяем, что получилось. Список выбора открывается, и он заполнен значениями. Пробуем открыть элемент — элемент не открывается, ошибка: "У пользователя недостаточно прав для работы с базой данных". В принципе, такое поведение системы условию задачи удовлетворяет. Разумеется, если нужно ещё как-то ограничивать список физических лиц, например по организации, то соответствующие ограничения доступа нужно добавлять.