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

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

Настройка ограничений доступа на уровне записей (RLS) в современных конфигурациях, использующих Библиотеку стандартных подсистем (БСП) версии 3.x, — это многоэтапный процесс. Часто разработчики сталкиваются с ситуацией, когда шаблоны в ролях прописаны, метаданные обновлены, но документы все равно не отображаются в списках или выдают ошибку доступа при записи. Разберем по шагам, как решить эту проблему, основываясь на практическом опыте и требованиях документации БСП.

Анализ проблемы: почему стандартных шаблонов недостаточно

Рассмотрим ситуацию: вы создали новый документ, например, ВводПрочихРасходов, добавили в него реквизит Организация и прописали в роли стандартный шаблон БСП #ПоЗначениям. Несмотря на это, пользователь с ограниченными правами видит пустой список или получает отказ в доступе. Выясним причину такого поведения системы. В БСП 3.x механизм управления доступом работает не только на уровне SQL-запросов, генерируемых платформой, но и на уровне предварительно рассчитанных данных, хранящихся в специальных регистрах. Если система «не знает» о связи вашего документа с конкретными ключами доступа, RLS работать не будет.

Шаг 1. Настройка шаблонов в ролях

Проанализируем использование шаблона в роли. Для документов в БСП чаще всего используется ограничение по виду доступа «Организации». Пример типичного шаблона для права «Чтение» и «Изменение» выглядит так:


#ПоЗначениям("Документ.ВводПрочихРасходов", "", "",
"Организации", "Организация",
"","",
"","",
"","",
"","","","","","","","",
"","","","","","","","",
"","","","","","","",""
)

Однако в современных версиях БСП (начиная с 3.1) настоятельно рекомендуется использовать шаблон #ПоЗначениямРасширенный. Он обеспечивает более высокую производительность и корректную обработку сложных условий. Важно убедиться, что параметры шаблона (имена полей и видов доступа) указаны без опечаток, так как система не всегда выдает ошибку при неверном строковом параметре, а просто возвращает пустой результат.

Шаг 2. Регистрация в определяемых типах

Для того чтобы подсистема управления доступом могла обрабатывать ваш документ, его необходимо включить в состав определенных типов метаданных. Посмотрим, какие именно типы критически важны:

  1. ВладелецЗначенийКлючейДоступа — в этот тип должны быть включены все объекты (справочники, документы), для которых настраивается RLS.
  2. ВладелецЗначенийКлючейДоступаДокумент — специализированный тип именно для документов.
  3. ВладелецНаборовЗначенийДоступа — добавьте сюда документ, если планируете использовать сложные наборы прав (например, доступ по совокупности Группы доступа и Организации).

Если пропустить этот шаг, механизмы БСП не смогут создать записи в регистрах сведений КлючиДоступаКОбъектам, и система будет считать, что доступ к объекту запрещен для всех, кроме полных прав.

Шаг 3. Программная регистрация в переопределяемом модуле

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


Процедура ПриЗаполненииПараметровОграниченияДоступа(Ограничения) Экспорт
    
    Настройка = Ограничения.Добавить();
    Настройка.Текст = "РАЗРЕШИТЬ Документ.ВводПрочихРасходов ГДЕ ОчередьСсылок ИСТИНА";
    // Здесь описывается логика связи объекта с видами доступа
    
КонецПроцедуры

Без этой регистрации автоматическое обновление ключей доступа может работать некорректно или не работать вовсе.

Шаг 4. Обновление вспомогательных данных — решающий этап

Даже если все настройки выполнены верно, данные в регистрах управления доступом могут оставаться старыми. Обычного вызова Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника() недостаточно. Рассмотрим по шагам, что нужно сделать:

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

Важный момент: если вы создали документ и сразу пытаетесь его записать, а RLS не работает, проверьте статус регламентных заданий по обновлению ключей доступа. В БСП 3.x расчет прав часто происходит в фоновом режиме. Для этого сценария пригодится обработка для точечного пересчета прав доступа БСП.

Шаг 5. Диагностика и отчетность

Если после всех манипуляций доступ все еще работает не так, как ожидалось, проанализируем ситуацию с помощью встроенных инструментов. В БСП есть отличный отчет «Права доступа». Выясним, как им пользоваться:

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

Резюме

Для успешной настройки RLS недостаточно просто добавить текст ограничения в роль. Мы должны обеспечить целостность данных в трех плоскостях: метаданные (определяемые типы), код (переопределяемые модули) и данные (регистры ключей доступа). Только после запуска обработки «Обновление вспомогательных данных» все механизмы связываются воедино, и ограничения начинают работать корректно.

← На главную