Настройка прав доступа на уровне записей (RLS) — одна из самых трудоемких задач в администрировании 1С. Часто возникают ситуации, когда, несмотря на заданные ограничения в профилях групп доступа, пользователь продолжает видеть «лишние» организации в списках выбора или документах. Особенно это актуально для конфигурации 1С:Управление нашей фирмой (УНФ), которая построена на базе Библиотеки стандартных подсистем (БСП) и имеет свои архитектурные особенности.
В этой статье мы разберем, почему ограничение может не отрабатывать, проанализируем влияние предопределенных элементов и выясним, как правильно настроить видимость организаций в выпадающих списках.
Первое, что мы должны проверить при возникновении проблем с RLS — это состав ролей пользователя. В системе 1С права работают по принципу «Разрешено всё, что разрешено хотя бы одной ролью». Если у пользователя подключено несколько профилей или ролей, и в одной из них настроено ограничение по организации, а в другой — дан полный доступ к этому же объекту без RLS, то система предоставит полный доступ.
Проанализируем ситуацию по шагам:
Организации) без ограничений.Если мы обнаружим, что роль ПолныеПрава или специализированная роль без шаблона RLS назначена пользователю, ограничение никогда не сработает.
Шаблоны ограничений RLS, такие как ПоОрганизациям, работают на основе существующих реквизитов в метаданных объекта. Рассмотрим ситуацию: вы пытаетесь ограничить видимость элементов в справочнике, но в его структуре отсутствует реквизит Организация.
В этом случае стандартный механизм БСП не сможет «понять», к какой организации относится запись. Для решения этой проблемы в УНФ применяются следующие подходы:
Организация, RLS настраивается через обращение к владельцу.ГруппаДоступа, который связывает запись с правилами RLS.Если же мы говорим о самом справочнике Организации, то здесь ограничение настраивается «само на себя». В профиле групп доступа должен быть активирован вид доступа «Организации», и в списке разрешенных значений должны быть указаны только нужные элементы.
Предопределенные элементы (например, «Основная организация») технически являются обычными записями, но программный код конфигурации часто обращается к ним напрямую. Рассмотрим важный технический нюанс: Привилегированный режим.
В УНФ многие серверные модули, отвечающие за заполнение документов и обработку данных, выполняются с установленным флагом Привилегированный. Когда код выполняется в этом режиме, система игнорирует любые настройки RLS. Если выпадающий список в документе формируется программно внутри такого модуля, пользователь увидит все организации, даже если на уровне базы данных ему запрещено их читать.
Посмотрим на пример кода, который может обходить RLS:
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Организации";
Результат = Запрос.Выполнить();
// Ограничения RLS здесь не действуют
УстановитьПривилегированныйРежим(Ложь);
Для исправления такой ситуации потребуется использование расширения конфигурации, чтобы наложить дополнительный фильтр на форму выбора документа.
В современных версиях платформы 8.3 реализован производительный режим RLS. Вместо динамического добавления условий ГДЕ в каждый запрос, система использует заранее рассчитанные ключи доступа в специальных вспомогательных таблицах.
Если вы изменили настройки прав, но изменения не вступили в силу, выполним следующие действия:
Также не забываем про кэширование на стороне клиента. Иногда достаточно просто перезапустить сеанс пользователя или очистить локальный кэш конфигурации.
Часто пользователь жалуется, что RLS «не работает», потому что он видит название организации в поле ввода, хотя не может открыть её карточку. Это происходит из-за разделения прав на Чтение и Просмотр.
Разберем, как правильно настроить ограничения в шаблоне:
Чтения, и для Просмотра.Если мы хотим, чтобы в документах в поле «Организация» отображались только доступные значения, необходимо убедиться, что в Группе доступа пользователя на закладке «Организации» установлено значение «Все запрещены, кроме выбранных», и в список добавлены только легитимные организации.
Подводя итог нашему анализу, для решения проблемы с RLS в УНФ мы рекомендуем придерживаться следующего алгоритма:
Организации настроен вид доступа и заполнены разрешенные значения.Соблюдение этих шагов позволит корректно изолировать данные организаций и обеспечить информационную безопасность в базе 1С:УНФ.