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

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

Начиная с версии платформы 1С:Предприятие 8.3.9.2033, в штатный механизм работы был добавлен встроенный контроллер безопасности — «Защита от опасных действий». Этот механизм запрашивает у пользователя интерактивное подтверждение при попытке выполнения потенциально опасных операций: открытии файлов дополнительных обработок, подключении внешних компонент или выполнении команд операционной системы.

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

Рассмотрим подробнее причины возникновения этой ошибки и проанализируем основные способы её решения.

Причина возникновения проблемы

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

  1. Платформа определяет контекст вызова. Для интерактивных сеансов выводится стандартное предупреждение. Для неинтерактивных (фоновых и регламентных заданий) операция сразу блокируется.
  2. Платформа рассчитывает хэш-сумму бинарного файла подключаемой внешней обработки. Если файл внешней обработки обновляется или перезаписывается, ранее полученное разрешение сбрасывается.
  3. Проверяется конфигурационный файл conf.cfg на сервере 1С.
  4. Проверяются параметры пользователя информационной базы и параметры вызова программных методов подключения.

Способ 1. Отключение защиты на сервере 1С через файл conf.cfg (Рекомендуемый)

Наиболее универсальный способ устранить проблему для фоновых заданий — это централизованное отключение проверки защиты от опасных действий в конфигурационном файле сервера 1С.

Разберем процесс настройки по шагам:

  1. Перейдем на сервер приложений 1С:Предприятие.
  2. Найдем каталог с конфигурационными файлами платформы. Обычно для клиент-серверного варианта на 64-разрядной ОС Windows файл находится по пути: C:\Program Files\1cv8\conf\conf.cfg (или в каталоге конкретной версии платформы).
  3. Откроем файл conf.cfg в текстовом редакторе с правами администратора.
  4. Добавим в файл параметр DisableUnsafeActionProtection с использованием регулярного выражения POSIX.

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

DisableUnsafeActionProtection=.*;

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

DisableUnsafeActionProtection=bd_prod_.*;bd_test_.*;

Важно: Редактировать файл conf.cfg необходимо именно на сервере 1С. Изменение локального файла conf.cfg на клиентских компьютерах никак не влияет на работу фоновых заданий на сервере.

Способ 2. Настройка пользователя информационной базы для фонового задания

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

Выполнить отключение можно двумя путями:

  1. Интерактивно: Авторизуемся под служебным пользователем, от имени которого запускается задание, через тонкий или толстый клиент. Один раз вручную откроем и запустим внешнюю обработку. При появлении системного предупреждения нажмем кнопку согласия на запуск. Платформа запомнит хэш-сумму файла для данного пользователя, и последующие фоновые запуски будут проходить без ошибок.
  2. Программно: Снимем флаг защиты с помощью встроенного языка 1С. Для этого запустим следующий код:

ПользовательОбъект = ПользователиИнформационнойБазы.НайтиПоИмени("СлужебныйПользовательФона");
Если ПользовательОбъект <> Неопределено Тогда
    ПользовательОбъект.ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях = Ложь;
    ПользовательОбъект.Записать();
КонецЕсли;

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

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

Для метода ВнешниеОбработки.Подключить() передается специальный объект защиты ОписаниеЗащитыОтОпасныхДействий:


Защита = Новый ОписаниеЗащитыОтОпасныхДействий;
Защита.ПредупреждатьОбОпасныхДействиях = Ложь;

ИмяПодключеннойОбработки = ВнешниеОбработки.Подключить(ПутьКФайлу, , Ложь, Защита);

Отличие защиты от опасных действий и безопасного режима

Необходимо строго разделять два разных механизма платформы: «Защиту от опасных действий» и «Безопасный режим».

Если после настройки файла conf.cfg фоновое задание начало успешно запускать обработку, но в процессе работы возникают ошибки доступа к внешним ресурсам, следует проверять настройки карточки дополнительной обработки в Библиотеке Стандартных Подсистем (БСП) и снять флажок «Безопасный режим» либо настроить профили безопасности кластера серверов 1С.

← На главную