Как решить проблему с безопасным режимом при открытии внешней обработки в 1С

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

Причины возникновения ошибки безопасного режима

Рассмотрим ситуацию, когда пользователь пытается открыть внешнюю обработку (например, «Выгрузка и загрузка данных XML») через меню Файл -> Открыть, но платформа выдает сообщение о том, что установлен безопасный режим, и блокирует выполнение функционала.

Проанализируем основные причины такого поведения платформы 1С:

  1. Разделение механизмов безопасности: Отключение галочки «Защита от опасных действий» в карточке пользователя убирает лишь предупреждающий диалог при открытии файла, но не отменяет сам безопасный режим исполнения кода.
  2. Ограничения для пользователей без полных прав: Интерактивное открытие сторонних файлов через меню Файл -> Открыть пользователем без административных прав всегда переводит исполнение алгоритмов внешней обработки в безопасный режим.
  3. Запрет на снятие ограничений из кода: Вызов метода УстановитьБезопасныйРежим(Ложь) непосредственно внутри кода внешней обработки приводит к ошибке Ошибка при вызове метода контекста (УстановитьБезопасныйРежим), так как платформа принципиально запрещает снижать уровень безопасности из контекста, который уже запущен в безопасном режиме.

Способ 1. Запуск под пользователем с полными правами

Разберем самый простой вариант для разового запуска обработки. Если нет необходимости встраивать обработку в конфигурацию на постоянной основе, запустите 1С под учетной записью администратора (пользователя с ролью Полные права). При открытии файлов через меню Файл -> Открыть полноправный пользователь не сталкивается с ограничениями безопасного режима.

Способ 2. Регистрация обработки в справочнике «Дополнительные отчеты и обработки»

Посмотрим, как подключить обработку к информационной базе в системе «1С:Управление торговлей» или других конфигурациях на базе БСП:

  1. Перейдем в раздел НСИ и администрирование -> Печатные формы, отчеты и обработки -> Дополнительные отчеты и обработки.
  2. Нажмем кнопку Добавить из файла и выберем нужный файл внешней обработки.
  3. В форме настройки подключения обработки найдем параметр Режим безопасности и переведем его в положение Отключен (или укажем БезопасныйРежим = Ложь в сведениях о внешней обработке).
  4. Сохраним изменения и предоставим доступ к обработке нужным пользователям.

Способ 3. Программный запуск с явным отключением безопасного режима

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


// Пример программного создания обработки без безопасного режима
ПутьКФайлу = "C:\Processors\ВыгрузкаЗагрузкаДанныхXML.epf";
ОбработкаОбъект = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь);
ОбработкаОбъект.ПолучитьФорму().Открыть();

Также можно использовать метод подключения обработки:


// Пример подключения внешней обработки без безопасного режима
ИмяОбработки = ВнешниеОбработки.Подключить(ПутьКФайлу, , Ложь);
Форма = ПолучитьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");
Форма.Открыть();

Почему попытка вызвать УстановитьБезопасныйРежим(Ложь) в коде не работает

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

УстановитьБезопасныйРежим(Ложь);

Платформа 1С сгенерирует исключение, так как метод УстановитьБезопасныйРежим предназначен исключительно для включения безопасного режима из обычного контекста или для его снятия только в том случае, если он был ранее явно установлен текущим блоком кода. Если же контекст изначально исполняется в безопасном режиме платформы (из-за интерактивного открытия неполноправным пользователем), отключить его изнутри исполнения невозможно из соображений безопасности.

← На главную