При разработке и доработке конфигураций с помощью расширений разработчики часто сталкиваются с ситуацией, когда исполнение кода блокируется или приводит к аварийному завершению сеанса. Одной из основных причин такого поведения является параметр Безопасный режим. Разберем подробнее, где находится эта настройка, на что она влияет и как правильно применять изменения в расширениях.
Настройка безопасного режима для расширения конфигурации доступна в двух местах в зависимости от того, работаем ли мы в режиме разработчика или администратора системы:
Безопасный режим.Управление расширениями конфигурации. В списочной форме выбераем нужное расширение и регулируем флаг безопасного режима.Если у расширения включен безопасный режим, платформа накладывает жесткие ограничения на исполняемый код:
В этом режиме платформа применяет ограничения к клиентским методам и серверным обработчикам событий форм. При попытке доработать серверные общие модули, модули объектов или модули менеджеров код может игнорироваться либо вызывать ошибки выполнения. Кроме того, в безопасном режиме блокируется переход в привилегированный режим, запрещены любые операции с файловой системой (за исключением каталога временных файлов), создание COM-объектов, использование внешних компонент и выполнение сетевых запросов.
При снятии флага безопасного режима расширение получает полные права на исполнение кода на сервере, однако это может вызывать новые проблемы.
Проанализируем основные причины, по которым отключение безопасного режима приводит к падению сеанса или нестабильной работе программы:
&Вместо, &Перед или &После, необработанное исключение или критическая ошибка на сервере моментально завершают рабочий процесс.Выясним, как правильно отключить безопасный режим и добиться корректного выполнения кода:
Безопасный режим в свойствах расширения через Конфигуратор или форму управления расширениями./ClearCache при запуске 1cv8.exe или вручную удалить папки кэша из каталогов %LocalAppData%\1C\1cv8 и %AppData%\1C\1cv8.После очистки кэша и перезапуска сеанса скомпилированный код расширения обновляется, и вызовы серверных процедур начинают работать корректно.