Как устранить ошибку безопасности при запуске внешней обработки в фоновом задании?

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

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

Проблема пустого пользователя в фоновом задании

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

Рассмотрим порядок действий для назначения ответственного пользователя:

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

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

Настройка разрешений в модуле внешней обработки (БСП)

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

Часто программисты допускают ошибку, пытаясь напрямую добавить элементы в массив разрешений, который еще не инициализирован. Выясним, как сделать это правильно. Посмотрим на пример кода в модуле обработки:


Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    
    // Важно: Безопасный режим устанавливаем в Ложь, если планируем использовать расширенные права
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    
    // Инициализируем массив разрешений
    ПараметрыРегистрации.Вставить("Разрешения", Новый Массив);
    
    // Добавляем разрешение на работу с временными файлами
    Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
    ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
    
    Возврат ПараметрыРегистрации;
    
КонецФункции

Проанализируем ситуацию: если после добавления этого кода система выдает ошибку Поле объекта не обнаружено (Разрешения), это означает, что структура ПараметрыРегистрации не содержит нужного ключа. Всегда инициализируйте его как Новый Массив перед использованием. После изменения кода обработки ее необходимо обновить в справочнике «Дополнительные отчеты и обработки», чтобы новые настройки разрешений записались в базу данных.

Использование ОписанияЗащитыОтОпасныхДействий

Иногда требуется программно подключить внешнюю обработку, минуя стандартные механизмы БСП. В этом случае поможет использование объекта ОписаниеЗащитыОтОпасныхДействий. Этот метод позволяет отключить интерактивные предупреждения, которые физически не могут быть отображены в фоновом задании.

Рассмотрим пример программного подключения:


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

// Подключаем внешнюю обработку с отключенной защитой
ИмяОбработки = ВнешниеОбработки.Подключить(ПутьКФайлу, , Ложь, ОбъектОписанияЗащиты);
ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяОбработки, Ложь);

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

Настройка файла conf.cfg на стороне сервера

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

Файл обычно располагается по пути: C:\Program Files\1C\1cv8\conf\conf.cfg. Для отключения защиты от опасных действий для всех баз или конкретных шаблонов, добавьте строку:

DisableUnsafeActionProtection=.*

Важно: данная настройка снижает общий уровень безопасности сервера. Рекомендуется использовать ее только в крайних случаях, когда другие методы (настройка разрешений БСП) не помогают. После внесения изменений в conf.cfg может потребоваться перезапуск службы Агент сервера 1С:Предприятия.

Проверка прав учетной записи службы (USR1CV8)

Если фоновое задание по-прежнему выдает ошибки при попытке записи файлов или обращения к внешним утилитам, проблема может лежать в плоскости прав операционной системы. Фоновое задание исполняется процессом rphost.exe, который запущен от имени пользователя ОС (по умолчанию USR1CV8).

Проверим следующие моменты:

Таким образом, решение вопроса «неработающего» фонового задания кроется в комплексной проверке: от назначения конкретного пользователя в регламентном задании до корректной настройки массива разрешений в коде самой обработки.

← На главную