Как настроить RLS для регистра накопления в конфигурации на БСП?

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

Настройка ограничения доступа на уровне записей (RLS) для регистров накопления часто вызывает затруднения из-за особенностей механизмов БСП (Библиотеки стандартных подсистем). Давайте разберемся, как правильно настроить доступ, чтобы пользователи видели только те записи, которые им разрешены, и не сталкивались с пустыми списками.

Основные этапы настройки RLS для регистра

Для корректной работы RLS недостаточно просто прописать шаблон в роли. Необходимо убедиться, что система «знает» о том, что данный регистр должен фильтроваться, и предоставить ей соответствующие инструкции.

  1. Настройка видов ограничений: Необходимо сообщить системе, какие поля регистра будут использоваться для фильтрации. Это делается в модуле УправлениеДоступомПереопределяемый.
  2. Реализация метода в менеджере: В модуле менеджера вашего регистра накопления нужно определить логику ограничения с помощью метода ПриЗаполненииОграниченияДоступа.
  3. Актуализация прав: После внесения изменений крайне важно выполнить обновление прав доступа (через обработку Инструменты разработчика или регламентное задание).

Шаг 1: Изменения в модуле УправлениеДоступомПереопределяемый

Откройте общий модуль УправлениеДоступомПереопределяемый и найдите процедуру ПриЗаполненииВидовОграниченийПравОбъектовМетаданных. В нее необходимо добавить информацию о вашем регистре. Это позволит системе включить его в механизмы кэширования и контроля доступа.

Добавьте строки, указывающие на регистр, право (Чтение или Изменение) и поле, по которому будет идти ограничение:


Процедура ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание) Экспорт
    Описание = Описание + "
    |РегистрНакопления.ВашРегистр.Чтение.Подразделение
    |РегистрНакопления.ВашРегистр.Изменение.Подразделение";
КонецПроцедуры

Шаг 2: Настройка модуля менеджера регистра

Теперь перейдем в модуль менеджера самого регистра накопления. Здесь нужно реализовать процедуру ПриЗаполненииОграниченияДоступа. Именно в ней мы задаем логику «Разрешить» для определенных данных.


Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
    Ограничение.Текст =
    "РазрешитьЧтениеИзменение
    |ГДЕ
    |    ЗначениеРазрешено(Подразделение)";
КонецПроцедуры

Здесь используется функция ЗначениеРазрешено(), которая автоматически проверяет, разрешено ли пользователю текущее значение поля Подразделение на основе его групп доступа.

Шаг 3: Проверка настроек роли

В конфигураторе, в нужной роли, убедитесь, что для регистра накопления установлена галочка Просмотр. В тексте ограничения доступа используйте шаблон #ПоЗначениям. Обратите внимание на порядок параметров: они должны строго соответствовать тому, что вы описали в переопределяемом модуле.


#ПоЗначениям("РегистрНакопления.ВашРегистр", "Чтение", "", "Подразделения", "Подразделение", "","",""...)

Почему данные могут быть все равно не видны?

Если после выполнения всех настроек записи регистра для пользователя отсутствуют, проверьте следующие моменты:

Следуя этим шагам, вы сможете настроить RLS гибко и производительно, обеспечивая безопасность данных в вашей учетной системе. Для оперативного обновления прав после изменения настроек ограничений можно использовать обработку для точечного пересчета прав доступа пользователей.

← На главную