Почему при RLS на управляемой форме появляется «Объект не найден» и исчезают реквизиты в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При настройке разграничения прав доступа на уровне записей (RLS) в Библиотеке стандартных подсистем (БСП) разработчики часто сталкиваются с непонятным поведением системы. В списках документов вместо значений ссылочных реквизитов отображается надпись «Объект не найден...», а при открытии управляемой формы документа полностью исчезают реквизиты или целые страницы (вкладки). Проанализируем причины такого поведения и разберем, как устроена работа RLS в платформе «1С:Предприятие 8.3».

Особенности объединения прав при наличии нескольких ролей

Посмотрим, как платформа 1С обрабатывает права доступа, если пользователю назначено несколько ролей. В системе 1С действует правило объединения прав по логическому условию ИЛИ (аддитивность прав): все, что разрешено хотя бы в одной из ролей, разрешено пользователю.

Из этого правила вытекают ключевые нюансы работы RLS:

  1. Конфликт роли с RLS и роли без RLS: Если у пользователя есть Роль1 с ограничением RLS на документ и Роль2, дающая полное право чтения на этот же документ без RLS, платформа предоставит полный доступ. Ограничения первой роли будут проигнорированы.
  2. Требование единого подхода в профиле: В рамках одного профиля групп доступа не должно быть сочетания ролей, где одна роль содержит ограничение RLS к объекту, а другая предоставляет права к этому же объекту без условий.

Различие между «Чтением» и «Просмотром» и скрытие элементов формы

Выясним причину, по которой с управляемой формы могут пропадать отдельные реквизиты или целые группы элементов. В платформе 1С разграничиваются два типа прав:

Разберем разницу в поведении обычных и управляемых форм при отсутствии прав:

На обычных формах при отсутствии доступа к объекту система выводила в поле текста надпись «Объект не найден...». На управляемых формах платформенная логика иная: если у пользователя нет прав просмотра или данные отсечены правилом RLS, элемент формы просто не отрисовывается.

При этом на управляемых формах действует механизм автоматической оптимизации интерфейса: если все дочерние элементы, находящиеся внутри группы (страницы панели, группы кнопок или обычной группы), становятся невидимыми, платформа автоматически скрывает и саму родительскую группу. В результате визуально может казаться, что исчезла целая вкладка документа.

Причины появления битых ссылок («Объект не найден...»)

Рассмотрим ситуационную проблему, когда документ отображается в списке, но в его полях со ссылкой на справочник выводится «Объект не найден...». Это происходить по следующим причинам:

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

Пошаговый чек-лист для исправления проблемы

Проанализируем последовательность действий для устранения ошибок RLS и отображения формы:

  1. Проверить состав ролей пользователя: Убедимся, что среди всех ролей, назначенных пользователю (через профили групп доступа), нет ролей с полными правами на данный документ или справочник без RLS.
  2. Проверить интерактивные права: В ролях пользователя для всех реквизитов и связанных справочников должны быть установлены флаги «Чтение» и «Просмотр».
  3. Обновить вспомогательные данные БСП: Запустим регламентное задание Заполнение данных для ограничения доступа или выполним обновление через внешнюю обработку ОбновлениеВспомогательныхДанных.epf из состава БСП.
  4. Проверить программную видимость в коде: В модуле формы в процедурах ПриСозданииНаСервере или ПриЧтенииНаСервере стоит проверить вызовы подсистемы УправлениеДоступом. Стандартный код БСП может программно менять свойство Видимость для элементов формы.
  5. Очистить кэш платформы: При изменении прав доступа и структуры RLS локальный кэш клиентского приложения 1С может хранить устаревшие данные интерфейса. Очистка кэша сеанса часто решает проблему мгновенно.

Выполнение этих шагов позволяет корректно настроить ограничения RLS в БСП и восстановить правильное отображение элементов управляемых форм.

← На главную