Как включить или отключить безопасный режим в расширениях 1С и что делать при сбоях?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке и доработке конфигураций с помощью расширений разработчики часто сталкиваются с ситуацией, когда исполнение кода блокируется или приводит к аварийному завершению сеанса. Одной из основных причин такого поведения является параметр Безопасный режим. Разберем подробнее, где находится эта настройка, на что она влияет и как правильно применять изменения в расширениях.

Где включается и отключается безопасный режим?

Настройка безопасного режима для расширения конфигурации доступна в двух местах в зависимости от того, работаем ли мы в режиме разработчика или администратора системы:

  1. В Конфигураторе: открываем палитру свойств конкретного расширения и находим флаг Безопасный режим.
  2. В режиме «1С:Предприятие»: переходим в раздел «Все функции» (или «Функции для специалиста») – «Стандартные» – Управление расширениями конфигурации. В списочной форме выбераем нужное расширение и регулируем флаг безопасного режима.

Как безопасный режим влияет на работу кода расширения?

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

В этом режиме платформа применяет ограничения к клиентским методам и серверным обработчикам событий форм. При попытке доработать серверные общие модули, модули объектов или модули менеджеров код может игнорироваться либо вызывать ошибки выполнения. Кроме того, в безопасном режиме блокируется переход в привилегированный режим, запрещены любые операции с файловой системой (за исключением каталога временных файлов), создание COM-объектов, использование внешних компонент и выполнение сетевых запросов.

При снятии флага безопасного режима расширение получает полные права на исполнение кода на сервере, однако это может вызывать новые проблемы.

Почему при отключении безопасного режима завершается сеанс?

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

  1. Ограничения профилей безопасности кластера: В клиент-серверном режиме отключение безопасного режима требует соответствующих разрешений в настройках кластера серверов 1С. Если на сервере задействованы профили безопасности, а разрешение для расширения не настроено, серверный процесс блокирует выполнение кода или завершает работу.
  2. Ошибки в заимствованных процедурах: Если в расширении переопределены методы объектов с помощью аннотаций &Вместо, &Перед или &После, необработанное исключение или критическая ошибка на сервере моментально завершают рабочий процесс.
  3. Рассинхронизация кэша платформы: Платформа 1С агрессивно кэширует метаданные и скомпилированный код расширений. Изменение свойства «Безопасный режим» без очистки кэша или перезапуска сеанса приводит к тому, что платформа пытается выполнить устаревшие фрагменты кода. В результате программа может выдавать случайные ошибки или «падать» на этапе записи документов.

Пошаговый алгоритм решения проблемы

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

  1. Снимем флаг Безопасный режим в свойствах расширения через Конфигуратор или форму управления расширениями.
  2. Завершим все активные сеансы пользователей, работающих с базой данных.
  3. Очистим кэш платформы 1С на клиентском рабочем месте. Для этого можно использовать параметр командной строки /ClearCache при запуске 1cv8.exe или вручную удалить папки кэша из каталогов %LocalAppData%\1C\1cv8 и %AppData%\1C\1cv8.
  4. В клиент-серверном режиме при необходимости перезапустим службу сервера 1С:Предприятия или переподключим расширение в динамическом режиме.

После очистки кэша и перезапуска сеанса скомпилированный код расширения обновляется, и вызовы серверных процедур начинают работать корректно.

← На главную