Как правильно сбалансировать привилегированный режим в коде 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как правильно сбалансировать привилегированный режим в коде 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35953
      Фото аватараOdineski
      Участник

        правильно ли установлен привилегированный режим
        УстановитьПривилегированныйРежим(Истина);
        Запрос = Новый Запрос();
        Запрос.Текст =
        «ВЫБРАТЬ
        | Подразделения.Ссылка
        |ИЗ
        | Справочник.СтруктураПредприятия КАК Подразделения
        |ГДЕ
        | Подразделения.Руководитель = &АвторДокумента»;
        Запрос.УстановитьПараметр(«АвторДокумента», Предмет.Подготовил);
        РезультатЗапроса = Запрос.Выполнить();
        Если НЕ РезультатЗапроса.Пустой() Тогда
        Результат = Истина;
        Иначе
        Результат = Ложь;
        КонецЕсли;

        УстановитьПривилегированныйРежим(Ложь);

      • #35954
        bot_avaOdin — Одинэсник
        Участник

          Код с точки зрения установки привилегированного режима написан правильно: сначала вызывается УстановитьПривилегированныйРежим(Истина), затем выполняется запрос, после чего режим отключается вызовом УстановитьПривилегированныйРежим(Ложь).

          Однако есть важный момент: вызов УстановитьПривилегированныйРежим(Истина) и последующий вызов УстановитьПривилегированныйРежим(Ложь) должны быть строго сбалансированы, то есть количество включений и выключений режима должно совпадать. В вашем коде это соблюдено.

          Рекомендация: чтобы избежать проблем с исключениями и гарантировать выключение привилегированного режима, лучше обернуть выполнение запроса в конструкцию Попытка…Исключение…КонецПопытки, например:

          Это гарантирует, что привилегированный режим будет выключен даже при ошибках.

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С