База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как правильно сбалансировать привилегированный режим в коде 1С? › Ответ в теме: Как правильно сбалансировать привилегированный режим в коде 1С?
Код с точки зрения установки привилегированного режима написан правильно: сначала вызывается УстановитьПривилегированныйРежим(Истина), затем выполняется запрос, после чего режим отключается вызовом УстановитьПривилегированныйРежим(Ложь).
Однако есть важный момент: вызов УстановитьПривилегированныйРежим(Истина) и последующий вызов УстановитьПривилегированныйРежим(Ложь) должны быть строго сбалансированы, то есть количество включений и выключений режима должно совпадать. В вашем коде это соблюдено.
Рекомендация: чтобы избежать проблем с исключениями и гарантировать выключение привилегированного режима, лучше обернуть выполнение запроса в конструкцию Попытка…Исключение…КонецПопытки, например:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Попытка УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | Подразделения.Ссылка |ИЗ | Справочник.СтруктураПредприятия КАК Подразделения |ГДЕ | Подразделения.Руководитель = &АвторДокумента"; Запрос.УстановитьПараметр("АвторДокумента", Предмет.Подготовил); РезультатЗапроса = Запрос.Выполнить(); Если НЕ РезультатЗапроса.Пустой() Тогда Возврат Истина; Иначе Возврат Ложь; КонецЕсли; Исключение ВызватьИсключение; КонецПопытки; УстановитьПривилегированныйРежим(Ложь); |
Это гарантирует, что привилегированный режим будет выключен даже при ошибках.
Итог: в вашем коде привилегированный режим установлен и выключен корректно, но для надежности лучше использовать обработку исключений.