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

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

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

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

Причины срабатывания предупреждения

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

Система автоматически перехватывает следующие события:

  1. Запуск внешних исполняемых файлов операционной системы (файлы .exe, .bat, .cmd, .sh и т. д.).
  2. Открытие внешних отчетов и внешних обработок (файлы .epf, .erf).
  3. Загрузку и подключение внешних компонент.
  4. Создание и обращение к внешним COM-объектам.
  5. Установку и применение расширений конфигурации (файлы .cfe).

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

Способ 1. Отключение защиты в карточке пользователя

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

  1. Откроем информационную базу под учетной записью с административными правами.
  2. Перейдем в раздел Администрирование — Настройки пользователей и прав — Пользователи.
  3. Откроем карточку нужного пользователя (или создадим отдельного сервисного пользователя для фоновых задач).
  4. В настройках найдем флаг Защита от опасных действий (или «Предупреждать об опасных действиях») и снимем его.
  5. Запишем изменения.

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

Способ 2. Глобальное отключение через конфигурационный файл conf.cfg

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

В файл conf.cfg добавляется специальная директива DisableUnsafeActionProtection, в которой задается регулярное выражение (маска строки соединения с базой).

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

DisableUnsafeActionProtection=.*

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

DisableUnsafeActionProtection=Srvr="server_name";Ref="base_name";

Важные нюансы настройки conf.cfg:

  1. В клиент-серверном варианте директиву может потребоваться прописать как на стороне клиента (в каталоге настроек платформы на рабочем месте), так и на стороне сервера 1С:Предприятия.
  2. Файл conf.cfg можно редактировать в каталоге конкретной версии (например, C:\Program Files\1cv8\8.3.XX.XXXX\bin\conf\conf.cfg) или в общесистемном каталоге настроек (C:\Program Files\1cv8\conf\conf.cfg). Рекомендуется использовать общесистемный каталог, чтобы настройки не терялись при обновлении релиза платформы.

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

Проанализируем программные средства управления защитой. Мы можем централизованно отключить флаг предупреждения у списка пользователей через встроенный язык 1С.

Посмотрим на пример кода:


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

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

Способ 4. Перенос логики в фоновые задания или альтернативные механизмы

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

  1. Выполнение на сервере: Перенос вызова сторонней утилиты в контекст фонового или регламентного задания. У фонового задания нет интерактивного интерфейса, поэтому при отключенной защите на сервере или у пользователя регламентного задания запуск произойдет без сбоев.
  2. Встроенные объекты 1С: Начиная с современных версий платформы 8.3, для работы с PDF доступны штатные объекты ДокументPDF, ЧтениеPDF и ЗаписьPDF. Они позволяют объединять и разбирать PDF-документы прямо в памяти 1С без вызова сторонних .exe-файлов.

Рекомендация по безопасности: Не отключайте защиту от опасных действий повсеместно (директивой .*) на рабочих местах обычных пользователей без строгой необходимости, так как это повышает риск выполнения вредоносного кода при случайном открытии непроверенных файлов.

← На главную