Как устранить ошибку безопасного режима при запуске внешней обработки регламентным заданием в 1С:УНФ?

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

При интеграции «1С:Управление нашей фирмой» (УНФ) с внешними сайтами, маркетплейсами или личными кабинетами программисты часто используют внешние обработки. Когда мы открываем такую обработку вручную через стандартное меню «Файл — Открыть», она работает без ограничений. Однако при переносе логики в регламентные задания для автоматического фонового обмена система начинает выдавать ошибки безопасности.

В этой статье мы подробно проанализируем, почему возникает ошибка Установлен безопасный режим. Выполнение операции запрещено! при попытке создать временный файл или выполнить сетевой запрос, разберем разницу между механизмами безопасности платформы «1С:Предприятие 8» и изучим три практических способа решения этой проблемы.

Выясняем причину: два контура безопасности платформы

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

  1. Безопасный режим (Safe Mode). Этот режим ограничивает работу кода на уровне платформы. Если для внешней обработки установлен безопасный режим, платформа запрещает выполнение потенциально опасных операций: работу с файловой системой (например, создание объекта Файл или вызов ПолучитьИмяВременногоФайла()), запуск внешних приложений, работу с COM-объектами и внешними компонентами, а также сетевые HTTP/HTTPS-запросы.
  2. Защита от опасных действий. Этот механизм появился в платформе начиная с версии 8.3.9. Он предназначен для предотвращения несанкционированного запуска вредоносного кода пользователями. При открытии внешней обработки система выводит интерактивное окно с предупреждением безопасности. Проблема в том, что регламентные задания выполняются на сервере в неинтерактивном режиме. Платформа не может показать диалоговое окно фоновому заданию, из-за чего оно аварийно завершается.

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

РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);

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

---

Решение №1: Архитектурно верный путь через профили безопасности БСП

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

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

Проанализируем пример настройки функции СведенияОВнешнейОбработке() с явным запросом разрешений:


Функция СведенияОВнешнейОбработке() Экспорт
    
    ИнформацияОКонтексте = _ПолучитьИнформациюОКонтекстеВыполнения();
    
    РегистрационныеДанные = Новый Структура;
    РегистрационныеДанные.Вставить("Наименование", "Обмен с личным кабинетом");    
    РегистрационныеДанные.Вставить("Информация", "Автоматический обмен заказами");
    РегистрационныеДанные.Вставить("Версия", ИнформацияОКонтексте.ВерсияДрайвера);
    РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");    
    
    // Оставляем безопасный режим включенным!
    РегистрационныеДанные.Вставить("БезопасныйРежим", Истина); 
    
    // Обязательно указываем версию БСП для корректной работы профилей безопасности
    РегистрационныеДанные.Вставить("ВерсияБСП", "2.2.2.1"); 
    
    // Создаем массив для хранения запрашиваемых разрешений
    Разрешения = Новый Массив;
    
    // 1. Запрашиваем разрешение на работу с каталогом временных файлов
    РазрешениеВременныеФайлы = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
    Разрешения.Добавить(РазрешениеВременныеФайлы);
    
    // 2. Запрашиваем разрешение на сетевой доступ к вашему сайту/API
    // Замените "api.mysite.ru" на реальный адрес вашего веб-сервиса
    РазрешениеСайт = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса("HTTPS", "api.mysite.ru", 443);
    Разрешения.Добавить(РазрешениеСайт);
    
    РегистрационныеДанные.Вставить("Разрешения", Разрешения);
    
    Возврат РегистрационныеДанные;
    
КонецФункции

При добавлении такой обработки в справочник «Дополнительные отчеты и обработки» администратору системы будет выведено стандартное окно БСП с предложением утвердить запрашиваемые разрешения. После подтверждения обработка будет выполняться регламентным заданием в безопасном режиме, но платформа сделает исключение для работы с временными файлами и обращения к указанному сайту.

---

Решение №2: Настройка специального пользователя для регламентных заданий

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

Выполним настройку по шагам:

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

При такой конфигурации регламентное задание будет запускаться в «небезопасном» режиме (параметр БезопасныйРежим = Ложь в регистрационных данных внешней обработки), но платформа больше не будет блокировать его выполнение интерактивными предупреждениями, поскольку у учетной записи отключена защита от опасных действий.

---

Решение №3: Глобальное отключение защиты от опасных действий через conf.cfg

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

Для этого нам понадобится отредактировать конфигурационный файл платформы conf.cfg. Разберем этот процесс подробнее:

  1. Перейдем в каталог установки платформы 1С на сервере. По умолчанию в ОС Windows файлы конфигурации расположены по пути: C:\Program Files\1cv8\conf\. Если вы используете конкретную версию платформы, путь может выглядеть как C:\Program Files\1cv8\8.3.XX.YYYY\bin\conf\.
  2. Откроем файл conf.cfg с помощью любого текстового редактора (например, Блокнота) от имени Администратора.
  3. Добавим в конец файла следующую строку, которая отключает защиту для всех баз данных текущего сервера: DisableUnsafeActionProtection=.* Если требуется отключить защиту только для конкретной информационной базы, вместо шаблона .* укажем ее имя в кластере, например: DisableUnsafeActionProtection=УНФ_Производство
  4. Сохраним файл конфигурации.
  5. Важный нюанс: для того чтобы изменения вступили в силу на серверной базе, обязательно выполните перезапуск службы Агент сервера 1С:Предприятия через консоль управления службами Windows (services.msc).

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

---

Сводная таблица по выбору метода решения проблемы

Для удобства выбора оптимального пути решения проблемы проанализируем преимущества и недостатки каждого метода:

Критерий сравнения Метод №1 (БСП Разрешения) Метод №2 (Пользователь ИБ) Метод №3 (Файл conf.cfg)
Безопасность системы Максимальная (рекомендуется) Средняя (контролируемая) Низкая (не рекомендуется для публичных серверов)
Сложность реализации Требуется доработка кода обработки Настройка в конфигураторе и режиме предприятия Доступ к файловой системе сервера приложений
Подходит для 1С:Фреш / Облака Да, единственный допустимый вариант Нет, права пользователей ограничены Нет, провайдеры блокируют доступ к conf.cfg
Трудозатраты при обновлении платформы Отсутствуют Отсутствуют Иногда требуется повторная настройка при обновлении каталогов установки

Таким образом, для промышленных баз данных и систем с высокими требованиями к информационной безопасности мы настоятельно рекомендуем использовать Метод №1. Для быстрых внутренних проектов и баз, находящихся на администрировании внутри компании, отлично подойдет Метод №2.

← На главную