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