Содержание:
1. Что такое Привилегированный режим в 1С?
2. Работа в привилегированном режиме
1. Что такое Привилегированный режим в 1С?
В системе 1С Предприятие 8.3 можно задавать выполнение кода в привилегированном режиме. Привилегированный режим 1С – это режим, при котором отключается проверка прав на уровне записей (RLS), не производится контроль прав пользователя 1С (роли пользователя), что позволяет ускорить выполнение кода и позволяет прочесть или записать нужные данные.
2. Работа в привилегированном режиме
Имеется несколько возможностей работы в привилегированном режиме.
· Вызов процедуры или функции из общего модуля с включенным флагом «Привилегированный».
Здесь можно располагать процедуры чтения и изменения данных, которые нужно выполнить, несмотря на доступные пользователю права доступа к объектам конфигурации.
Например, есть пользователь с ролью «Кассир». Обычно эта роль с сильно ограниченным набором прав и ему доступен только документ регистрации продаж. Перед записью документа необходимо проверить взаиморасчеты с клиентом. В этом случае вызывается процедура из общего модуля с флагом «Привилегированный», а обратно возвращается результат проверки. При этом пользователю не доступны сами данные о взаиморасчетах.
Другой пример – документ продажи оформляет кладовщик, у которого нет прав на регистр накопления «Продажи». В привилегированном режиме он сможет провести документ и записать данные в регистр продаж, при этом доступа к данным регистра он не получит.
· Использование процедуры глобального контекста УстановитьПривилегированныйРежим (<Включить>), где «Включить» – обязательный параметр типа Булево. В этом случае:
Истина – включает привилегированный режим;
Ложь – отключает привилегированный режим в 1С.
В клиент-серверном варианте работы информационной базы при вызове этого метода на клиенте привилегированный режим не включается.
Такой подход может использоваться при формировании отчета в 1С, где возможна ситуация, что отчет будет получать данные из регистров, которые недоступны пользователю. В этом случае процедуру получения данных нужно запустить в привилегированном режиме 1С:
УстановитьПривилегированныйРежим(Истина);
МассивРезультатов = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
УстановитьПривилегированныйРежим(Ложь).
В основном количество вызовов включения привилегированного режима должно быть равным количеству вызовов выключения режима, однако, они могут различаться. Привилегированный режим автоматически выключится при возврате из функции/процедуры, в который он был включен. Если количество вызовов выключения привилегированного режима будет больше чем количество вызовов включения, то будет вызвано исключение.
Добавим, что привилегированный режим следует включать только для тех участков кода, где это действительно необходимо и отключать сразу же после выполнения этого фрагмента, чтобы в дальнейшем не терялась проверка прав пользователя.
Существует метод проверки активности привилегированного режима:
ПривилегированныйРежим(), который возвращает Истина или Ложь.
Также, начиная с версии 8.2, в платформе для документов в свойствах объекта конфигурации добавлены свойства «Привилегированный режим при проведении» и «Привилегированный режим при отмене проведения». Эти свойства автоматически устанавливаются в значение Истина при создании документа. В результате проведение и отмена проведения документа будет выполнено в привилегированном режиме.
Для объекта конфигурации «Бизнес-процесс» добавлено свойство «Привилегированный режим при создании задач». Оно также автоматически устанавливается в значение Истина при создании нового бизнес-процесса.
Есть несколько исключений, при которых не будет установлен привилегированный режим:
· Если установку привилегированного режима пытаться вызвать из внешней обработки с включенной защитой от опасных действий у пользователя (ЗащитаОтОпасныхДействий);
· Если информационная база работает в клиент-серверном режиме, а в консоли кластера серверов в свойствах информационной базы выбран профиль безопасности без флага «к привилегированному режиму»:
Подводя итог, следует сканцентрировать внимание на том, что привилегированный режим в 1С нужно использовать тогда, когда это увеличит скорость работы системы за счет отключения проверки прав, но не будет противоречить логике программы. Данный режим уместен тогда, когда его использование точно не приведет к нежелательным проводкам или утечке данных.
Специалист компании ООО «Кодерлайн»
Решетников Дмитрий Сергеевич