При настройке разграничения прав доступа на уровне записей (RLS) в Библиотеке стандартных подсистем (БСП) разработчики часто сталкиваются с непонятным поведением системы. В списках документов вместо значений ссылочных реквизитов отображается надпись «Объект не найден...», а при открытии управляемой формы документа полностью исчезают реквизиты или целые страницы (вкладки). Проанализируем причины такого поведения и разберем, как устроена работа RLS в платформе «1С:Предприятие 8.3».
Посмотрим, как платформа 1С обрабатывает права доступа, если пользователю назначено несколько ролей. В системе 1С действует правило объединения прав по логическому условию ИЛИ (аддитивность прав): все, что разрешено хотя бы в одной из ролей, разрешено пользователю.
Из этого правила вытекают ключевые нюансы работы RLS:
Роль1 с ограничением RLS на документ и Роль2, дающая полное право чтения на этот же документ без RLS, платформа предоставит полный доступ. Ограничения первой роли будут проигнорированы.Выясним причину, по которой с управляемой формы могут пропадать отдельные реквизиты или целые группы элементов. В платформе 1С разграничиваются два типа прав:
Разберем разницу в поведении обычных и управляемых форм при отсутствии прав:
На обычных формах при отсутствии доступа к объекту система выводила в поле текста надпись «Объект не найден...». На управляемых формах платформенная логика иная: если у пользователя нет прав просмотра или данные отсечены правилом RLS, элемент формы просто не отрисовывается.
При этом на управляемых формах действует механизм автоматической оптимизации интерфейса: если все дочерние элементы, находящиеся внутри группы (страницы панели, группы кнопок или обычной группы), становятся невидимыми, платформа автоматически скрывает и саму родительскую группу. В результате визуально может казаться, что исчезла целая вкладка документа.
Рассмотрим ситуационную проблему, когда документ отображается в списке, но в его полях со ссылкой на справочник выводится «Объект не найден...». Это происходить по следующим причинам:
#ПоЗначениям, а для документов — шаблоны #ДляОбъекта или #ПоЗначениямРасширенный. Наложение шаблона справочника на документ приводит к некорректному формированию SQL-запроса платформой.Проанализируем последовательность действий для устранения ошибок RLS и отображения формы:
Заполнение данных для ограничения доступа или выполним обновление через внешнюю обработку ОбновлениеВспомогательныхДанных.epf из состава БСП.ПриСозданииНаСервере или ПриЧтенииНаСервере стоит проверить вызовы подсистемы УправлениеДоступом. Стандартный код БСП может программно менять свойство Видимость для элементов формы.Выполнение этих шагов позволяет корректно настроить ограничения RLS в БСП и восстановить правильное отображение элементов управляемых форм.