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

Программист 1С v8.3 (Обычные формы)
← На главную

При автоматизации процессов в 1С, например, в конфигурации Управление производственным предприятием (УПП), разработчики часто сталкиваются с механизмом «Защиты от опасных действий». Этот механизм, внедренный в платформу начиная с версии 8.3.9, блокирует программное открытие внешних обработок и отчетов, выводя интерактивное диалоговое окно. Поскольку у фонового задания нет интерфейса и пользователя, способного нажать кнопку «Да», выполнение кода прерывается ошибкой. В этой статье мы подробно разберем, как победить эту «долбаную безопасность» и обеспечить стабильную работу регламентных заданий.

Разберем причину возникновения проблемы

Прежде чем переходить к решениям, проанализируем ситуацию. Платформа 1С считает «опасным действием» любое обращение к внешним ресурсам: открытие файлов .epf или .erf, использование COM-объектов, запуск внешних приложений. Для интерактивного сеанса это оправдано защитой от вредоносного кода, но для серверных процессов это становится непреодолимым барьером. Установить УстановитьПривилегированныйРежим(Истина) в данном случае не помогает, так как защита срабатывает на более высоком уровне платформы, проверяя настройки конкретного пользователя или всей информационной базы.

Решение 1: Настройка прав пользователя информационной базы

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

Выполним следующие шаги:

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

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

Решение 2: Глобальное отключение через файл conf.cfg

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

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

  1. Найдем каталог установки платформы (обычно это C:\Program Files\1cv8\conf).
  2. Найдем или создадим там текстовый файл с именем conf.cfg.
  3. Добавим в него следующую строку:

DisableUnsafeActionProtection=.*

Разберем, что это дает. Параметр DisableUnsafeActionProtection позволяет перечислить через запятую маски имен информационных баз, для которых защита будет полностью отключена. Символ .* означает «для всех баз». Если мы хотим отключить защиту только для конкретной базы WorkBase, код будет выглядеть так:

DisableUnsafeActionProtection=WorkBase

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

Решение 3: Использование профилей безопасности в кластере

Для систем, работающих в клиент-серверном варианте, наиболее профессиональным решением будет использование Профилей безопасности. Это позволяет тонко настроить разрешения на уровне кластера серверов.

Посмотрим, как это настроить в консоли администрирования кластера:

  1. Перейдем в раздел «Профили безопасности» вашего кластера.
  2. Создадим новый профиль (например, UnrestrictedReports).
  3. В свойствах профиля установим флаг «Разрешить выполнение опасных действий».
  4. В настройках самой информационной базы в консоли укажите этот профиль как основной.

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

Решение 4: Программный обход через справочник «Дополнительные отчеты и обработки»

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

Проанализируем пример кода для запуска отчета, который уже загружен в систему и поэтому считается доверенным:


// Ссылка на элемент справочника ДополнительныеОтчетыИОбработки
СсылкаНаОтчет = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("МойОтчетДляРассылки");

// Получаем объект обработки через механизмы БСП
ВнешнийОбъект = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(СсылкаНаОтчет);

// Вызываем метод формирования
ВнешнийОбъект.СформироватьОтчет();

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

Решение 5: Разовое интерактивное подтверждение

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

Однако этот метод ненадежен: при изменении версии платформы, переносе базы или даже простом перемещении файла в другую папку защита сработает снова. Поэтому мы рекомендуем использовать Решение 1 или Решение 2 как основные.

Выводы и рекомендации

Подводя итог нашему разбору, можно выделить следующую стратегию действий:

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

← На главную