Как отключить предупреждение безопасности при запуске внешней обработки по расписанию?

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

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

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

Выясним причину блокировки

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

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

Способ 1. Назначение специального пользователя для регламентного задания

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

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

  1. Откроем базу в режиме Конфигуратор с административными правами.
  2. Перейдем в меню Администрирование > Пользователи.
  3. Создадим отдельного служебного пользователя для регламентных заданий (например, с именем РегламентныйПользователь) или выберем существующую техническую учетную запись.
  4. В свойствах пользователя на вкладке Основные снимем флажок Защита от опасных действий. Назначим пользователю необходимые права (роли) для выполнения регламентных процедур и сохраним изменения.
  5. Перейдем в дерево метаданных конфигурации, найдем нужное регламентное задание в ветке Общие > Регламентные задания (либо откроем список регламентных заданий в режиме 1С:Предприятие через обработку управления регламентными заданиями).
  6. В свойстве Имя пользователя укажем созданную учетную запись.

Теперь фоновое задание будет стартовать в контексте учетной записи с отключенной защитой и успешно выполнять подключение внешней обработки.

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

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

Посмотрим на пример программного кода для пакетного отключения защиты:


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

После выполнения данного кода в привилегированном режиме у всех учетных записей свойство ПредупреждатьОбОпасныхДействиях примет значение Ложь.

Способ 3. Глобальная настройка на стороне сервера через conf.cfg

Если используется клиент-серверный вариант работы, регламентные задания исполняются рабочими процессами rphost непосредственно на сервере 1С. Внесение изменений в локальный файл conf.cfg на рабочей станции администратора не окажет влияния на серверные фоновые задания.

Разберем, как настроить серверный конфигурационный файл:

  1. Найдем файл conf.cfg на сервере 1С:Предприятия. Обычно он располагается в каталоге конкретной версии (например, C:\Program Files\1cv8\8.3.XX.XXXX\bin\conf\) или в общем каталоге конфигурации сервера (C:\Program Files\1cv8\conf\).
  2. Откроем файл в текстовом редакторе с правами администратора ОС.
  3. Добавим параметр DisableUnsafeActionProtection. Для полного отключения проверки по регулярному выражению для всех баз укажем: DisableUnsafeActionProtection=.* Если требуется отключить проверку только для конкретной информационной базы, укажем её имя: DisableUnsafeActionProtection=ИмяБазы;
  4. Сохраним файл конфигурации. Изменения вступают в силу без обязательного перезапуска службы кластера, однако при необходимости можно перезапустить службу 1C:Enterprise 8.3 Server Agent.

Способ 4. Программное подавление предупреждений при создании внешней обработки

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

Посмотрим на пример использования объекта ОписаниеЗащитыОтОпасныхДействий:


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

// Вариант 1: Создание объекта из файла на диске
ОбработкаОбъект = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь, Защита);

// Вариант 2: Подключение обработки из временного хранилища
ИмяПодключенной = ВнешниеОбработки.Подключить(АдресВХранилище, , Ложь, Защита);
ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяПодключенной);

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

← На главную