Начиная с версии платформы 1С:Предприятие 8.3.9.2033, в штатный механизм работы был добавлен встроенный контроллер безопасности — «Защита от опасных действий». Этот механизм запрашивает у пользователя интерактивное подтверждение при попытке выполнения потенциально опасных операций: открытии файлов дополнительных обработок, подключении внешних компонент или выполнении команд операционной системы.
Однако при выполнении внешних и дополнительных обработок в фоновых или регламентных заданиях возникает проблема: фоновый сеанс запускается без интерактивного контекста и без участия пользователя. В результате платформа 1С не может вывести диалоговое окно запроса на подтверждение, и регламентная процедура завершается критической ошибкой: Рекомендуется обращать внимание на источник, из которого получен данный файл....
Рассмотрим подробнее причины возникновения этой ошибки и проанализируем основные способы её решения.
Проанализируем порядок, в котором платформа 1С производит проверку безопасности:
conf.cfg на сервере 1С.Наиболее универсальный способ устранить проблему для фоновых заданий — это централизованное отключение проверки защиты от опасных действий в конфигурационном файле сервера 1С.
Разберем процесс настройки по шагам:
C:\Program Files\1cv8\conf\conf.cfg (или в каталоге конкретной версии платформы).conf.cfg в текстовом редакторе с правами администратора.DisableUnsafeActionProtection с использованием регулярного выражения POSIX.Для полного отключения проверки для всех информационных баз сервера укажем следующую строку:
DisableUnsafeActionProtection=.*;
Если требуется отключить защиту только для конкретных информационных баз, можно задать шаблон по именам баз в строке соединения:
DisableUnsafeActionProtection=bd_prod_.*;bd_test_.*;
Важно: Редактировать файл conf.cfg необходимо именно на сервере 1С. Изменение локального файла conf.cfg на клиентских компьютерах никак не влияет на работу фоновых заданий на сервере.
Если регламентное задание выполняется от имени конкретного пользователя информационной базы, можно снять флаг предупреждений непосредственно для этой учетной записи.
Выполнить отключение можно двумя путями:
ПользовательОбъект = ПользователиИнформационнойБазы.НайтиПоИмени("СлужебныйПользовательФона");
Если ПользовательОбъект <> Неопределено Тогда
ПользовательОбъект.ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях = Ложь;
ПользовательОбъект.Записать();
КонецЕсли;
Если дополнительная обработка вызывается из программного кода с помощью встроенного языка, разработчик может принудительно отключить проверку в параметрах подключения.
Для метода ВнешниеОбработки.Подключить() передается специальный объект защиты ОписаниеЗащитыОтОпасныхДействий:
Защита = Новый ОписаниеЗащитыОтОпасныхДействий;
Защита.ПредупреждатьОбОпасныхДействиях = Ложь;
ИмяПодключеннойОбработки = ВнешниеОбработки.Подключить(ПутьКФайлу, , Ложь, Защита);
Необходимо строго разделять два разных механизма платформы: «Защиту от опасных действий» и «Безопасный режим».
Если после настройки файла conf.cfg фоновое задание начало успешно запускать обработку, но в процессе работы возникают ошибки доступа к внешним ресурсам, следует проверять настройки карточки дополнительной обработки в Библиотеке Стандартных Подсистем (БСП) и снять флажок «Безопасный режим» либо настроить профили безопасности кластера серверов 1С.