Работа с внешними обработками в режиме фоновых заданий часто сопровождается трудностями, связанными с системой безопасности платформы «1С:Предприятие 8.3». Ошибка «Предупреждение безопасности» или «Ошибка безопасности запуска файла» возникает из-за того, что фоновые процессы выполняются в неинтерактивном сеансе, где механизмы защиты работают строже, чем при обычном запуске пользователем. В этой статье мы подробно разберем, как правильно настроить внешнюю обработку и серверную часть, чтобы фоновые задания выполнялись без сбоев.
Одной из главных причин отказа в доступе является отсутствие привязки регламентного задания к конкретному пользователю информационной базы. Если задание запускается «от имени системы», оно может не иметь достаточных прав на выполнение кода внешней обработки или на работу с файловой системой. Проанализируем, как это исправить.
Рассмотрим порядок действий для назначения ответственного пользователя:
Полными правами.Важный момент: если в журнале регистрации в колонке «Пользователь» пусто, значит, платформа пытается выполнить код в контексте системного сеанса, который по умолчанию ограничен в правах. Указание пользователя принудительно инициализирует сеанс с нужными правами доступа.
Если конфигурация построена на базе Библиотеки стандартных подсистем (БСП), платформа ожидает от внешней обработки четкого описания того, какие ресурсы ей требуются. Простого отключения безопасного режима в интерфейсе бывает недостаточно. Разберем, как программно запросить разрешения в функции СведенияОВнешнейОбработке.
Часто программисты допускают ошибку, пытаясь напрямую добавить элементы в массив разрешений, который еще не инициализирован. Выясним, как сделать это правильно. Посмотрим на пример кода в модуле обработки:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
// Важно: Безопасный режим устанавливаем в Ложь, если планируем использовать расширенные права
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
// Инициализируем массив разрешений
ПараметрыРегистрации.Вставить("Разрешения", Новый Массив);
// Добавляем разрешение на работу с временными файлами
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
Возврат ПараметрыРегистрации;
КонецФункции
Проанализируем ситуацию: если после добавления этого кода система выдает ошибку Поле объекта не обнаружено (Разрешения), это означает, что структура ПараметрыРегистрации не содержит нужного ключа. Всегда инициализируйте его как Новый Массив перед использованием. После изменения кода обработки ее необходимо обновить в справочнике «Дополнительные отчеты и обработки», чтобы новые настройки разрешений записались в базу данных.
Иногда требуется программно подключить внешнюю обработку, минуя стандартные механизмы БСП. В этом случае поможет использование объекта ОписаниеЗащитыОтОпасныхДействий. Этот метод позволяет отключить интерактивные предупреждения, которые физически не могут быть отображены в фоновом задании.
Рассмотрим пример программного подключения:
ОбъектОписанияЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;
ОбъектОписанияЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;
// Подключаем внешнюю обработку с отключенной защитой
ИмяОбработки = ВнешниеОбработки.Подключить(ПутьКФайлу, , Ложь, ОбъектОписанияЗащиты);
ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяОбработки, Ложь);
Этот подход полезен, когда обработка должна выполнять действия с файлами или COM-объектами, которые платформа считает потенциально опасными.
Многие системные администраторы пытаются решить проблему через файл conf.cfg, но делают это на клиентских машинах. Однако для фоновых заданий настройки должны быть применены на сервере 1С. Выясним, где именно искать этот файл и что в него писать.
Файл обычно располагается по пути: C:\Program Files\1C\1cv8\conf\conf.cfg. Для отключения защиты от опасных действий для всех баз или конкретных шаблонов, добавьте строку:
DisableUnsafeActionProtection=.*
Важно: данная настройка снижает общий уровень безопасности сервера. Рекомендуется использовать ее только в крайних случаях, когда другие методы (настройка разрешений БСП) не помогают. После внесения изменений в conf.cfg может потребоваться перезапуск службы Агент сервера 1С:Предприятия.
Если фоновое задание по-прежнему выдает ошибки при попытке записи файлов или обращения к внешним утилитам, проблема может лежать в плоскости прав операционной системы. Фоновое задание исполняется процессом rphost.exe, который запущен от имени пользователя ОС (по умолчанию USR1CV8).
Проверим следующие моменты:
USR1CV8 права на чтение и запись в папку, где лежит внешняя обработка?C:\Windows\Temp или профиль пользователя службы)?Таким образом, решение вопроса «неработающего» фонового задания кроется в комплексной проверке: от назначения конкретного пользователя в регламентном задании до корректной настройки массива разрешений в коде самой обработки.