При настройке автоматического запуска внешних обработок (файлов .epf) по расписанию разберем распространенную ситуацию: фоновое или регламентное задание завершается ошибкой или зависает, а в журнале регистрации фиксируется сообщение Предупреждение безопасности с запросом подтверждения действия пользователя.
Выясним причину такого поведения платформы 1С:Предприятие и проанализируем основные способы устранения этой проблемы.
Начиная с версий платформы 1С 8.3.9 и 8.3.10, в платформу встроен механизм Защита от опасных действий. Этот механизм перехватывает попытки выполнения потенциально небезопасных операций, таких как подключение внешних обработок, вызов команд операционной системы, доступ к файловой системе или использование COM-объектов.
Когда обработка запускается пользователем интерактивно, на экране появляется диалоговое окно с вопросом Разрешить открывать данный файл?. Однако фоновые и регламентные задания выполняются на сервере в неинтерактивном режиме. В этом контексте некому нажать кнопку «Разрешить», из-за чего процесс блокируется или завершается аварийно.
Рассмотрим подробно варианты решения данной задачи в зависимости от архитектуры вашей системы.
Разберем по шагам наиболее быстрый и стандартный способ решения проблемы без изменения конфигурационных файлов сервера.
Robot_Scheduler).Важный момент: если фоновое задание запускается без привязки к конкретному пользователю информационной базы, оно исполняется в системном контексте, где персональные флажки пользователей не учитываются.
Проанализируем вариант, когда требуется отключить защиту от опасных действий для всех фоновых заданий или конкретных баз на уровне сервера 1С:Предприятие.
Для этого отредактируем файл конфигурации платформы conf.cfg, расположенный в каталоге установки платформы на сервере (например, C:\Program Files\1cv8\conf\ или /opt/1cv8/x86_64/8.3.X.X/conf/):
conf.cfg в текстовом редакторе.DisableUnsafeActionProtection.Если требуется полностью отключить защиту для всех информационных баз сервера:
DisableUnsafeActionProtection=.*
Если требуется отключить защиту только для баз, имя которых соответствует определенной регулярной маске:
DisableUnsafeActionProtection=my_production_base.*
Обратим внимание, что редактировать conf.cfg необходимо именно на сервере приложений 1С, так как регламентные задания исполняются в контексте рабочего процесса rphost.
Посмотрим на пример кода, если внешняя обработка подключается или создается программно в модуле регламентного задания.
При вызове метода ВнешниеОбработки.Подключить() необходимо явно передать значение Ложь в параметры, отвечающие за безопасный режим и защиту от опасных действий:
// Отключаем безопасный режим и защиту от опасных действий программно
ПутьКФайлу = "C:\Services\MyExternalDataProcessor.epf";
ИмяПодключеннойОбработки = ВнешниеОбработки.Подключить(ПутьКФайлу, , Ложь, Ложь);
// Создаем экземпляр обработки
ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяПодключеннойОбработки, Ложь);
ОбработкаОбъект.ВыполнитьКоманду();
Важно различать понятия ЗащитаОтОпасныхДействий и БезопасныйРежим. Даже если отключить интерактивные предупреждения, включенный безопасный режим (БезопасныйРежим = Истина) все равно заблокирует работу с файлами на диске, COM-объектами или внешними библиотеками.
Если конфигурация построена на базе Библиотеки Стандартных Подсистем (БСП), рассмотрим стандартный механизм подключения внешних обработок:
Нет).При таком подходе платформа и БСП самостоятельно управляют правами и безопасностью, не запрашивая интерактивных подтверждений при срабатывании расписания.