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