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

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

При выполнении фоновых и регламентных заданий разработчики часто сталкиваются с ситуацией, когда внешняя обработка успешно работает в интерактивном сеансе, но завершается с ошибкой в фоновом режиме. Типичный пример — создание сетевого подключения через конструктор HTTPСоединение, которое аварийно прерывается сообщением: «Установлен безопасный режим. Выполнение операции запрещено». Разберем причины такого поведения платформы «1С:Предприятие» и рассмотрим все доступные способы решения этой задачи.

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

  1. Установление сетевых соединений (HTTPСоединение, FTPСоединение, работа с объектом ИнтернетПочта).
  2. Запуск внешних исполняемых файлов и скриптов операционной системы через ЗапуститьПриложение.
  3. Создание и вызов COM-объектов (Новый COMОбъект).
  4. Загрузку и подключение внешних компонент.
  5. Прямой доступ к файловой системе сервера за пределами разрешенных каталогов.

Рассмотрим подробнее практические варианты обхода и отключения этих ограничений.

Способ 1. Программное отключение безопасного режима при загрузке обработки

Если регламентное задание открывает внешнюю обработку напрямую из файла или из хранилища значений с помощью метода ВнешниеОбработки.Создать, платформа по умолчанию применяет к ней безопасный режим. Чтобы снять ограничения, необходимо явно передать второй параметр со значением Ложь.

Посмотрим на пример корректного программного создания объекта внешней обработки:


ИспользоватьБезопасныйРежим = Ложь;
Обработка = ВнешниеОбработки.Создать(ПутьКФайлу, ИспользоватьБезопасныйРежим);
Обработка.ВыполнитьДействие();

При таком вызове код обработки выполняется с полными серверными правами текущего сеанса, что позволяет без ошибок создавать HTTPСоединение, отправлять запросы и работать с внешними API.

Способ 2. Настройка параметров в БСП (Библиотека стандартных подсистем)

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

1. Полное отключение безопасного режима при регистрации обработки.

В модуле объекта внешней обработки в экспортной функции СведенияОВнешнейОбработке() необходимо явно указать параметр безопасного режима:


Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Наименование = "Интеграция с внешним сервисом";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    
    // Определение команд обработки
    // ...
    
    Возврат ПараметрыРегистрации;

КонецФункции

Также администратор информационной базы может снять флаг безопасного режима вручную в карточке элемента справочника «Дополнительные отчеты и обработки».

2. Декларирование точечных разрешений на доступ к ресурсам (рекомендуемый подход).

Если отключение безопасного режима недопустимо политиками безопасности (например, при работе базы в модели сервиса или облаке), обработка может запросить конкретные разрешения. В функции СведенияОВнешнейОбработке() прописывается доступ к определенному веб-серверу:


ПараметрыРегистрации.Разрешения.Добавить(
    РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса(
        "HTTP", 
        "api.service.com", 
        443, 
        "Синхронизация данных через HTTP REST API"
    )
);

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

Способ 3. Проверка механизма «Защита от опасных действий»

Разберем еще один важный нюанс платформы «1С:Предприятие», начиная с версии 8.3.9. Механизм «Защита от опасных действий» может принудительно активировать безопасный режим для кода, запускаемого пользователем.

Для корректной работы регламентных заданий необходимо убедиться в выполнении следующих настроек:

  1. В свойствах регламентного задания должен быть указан конкретный служебный пользователь информационной базы.
  2. У этого пользователя в конфигураторе или в режиме «1С:Предприятие» должен быть отключен флаг «Защита от опасных действий».
  3. Пользователь должен обладать достаточными правами для выполнения требуемых серверных операций.

Способ 4. Архитектурные альтернативы

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

  1. Использование расширения конфигурации: Логика обмена данными переносится в расширение. В свойствах расширения отключаются флаги Безопасный режим и Защита от опасных действий.
  2. Вызов через привилегированный общий модуль: Код создания HTTPСоединение и отправки запроса выносится в общий модуль конфигурации со свойствами Сервер и Привилегированный. Внешняя обработка лишь передает параметры и вызывает функцию этого модуля.
  3. Встраивание в состав метаданных: Обработка включается непосредственно в дерево метаданных конфигурации, что исключает наложение ограничений, специфичных для внешних файлов.
← На главную