При интеграции «1С:Управление нашей фирмой» (УНФ) с внешними сайтами, маркетплейсами или личными кабинетами программисты часто используют внешние обработки. Когда мы открываем такую обработку вручную через стандартное меню «Файл — Открыть», она работает без ограничений. Однако при переносе логики в регламентные задания для автоматического фонового обмена система начинает выдавать ошибки безопасности.
В этой статье мы подробно проанализируем, почему возникает ошибка Установлен безопасный режим. Выполнение операции запрещено! при попытке создать временный файл или выполнить сетевой запрос, разберем разницу между механизмами безопасности платформы «1С:Предприятие 8» и изучим три практических способа решения этой проблемы.
Прежде чем переходить к написанию кода, давайте разберем теорию. В современных версиях платформы «1С:Предприятие 8.3» функционируют две принципиально разные системы защиты, которые часто путают разработчики:
Файл или вызов ПолучитьИмяВременногоФайла()), запуск внешних приложений, работу с COM-объектами и внешними компонентами, а также сетевые HTTP/HTTPS-запросы.В коде автора темы мы видим типичный конфликт: попытку обойти интерактивное предупреждение защиты от опасных действий путем включения безопасного режима в регистрационных данных:
РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
Это действительно избавляет от всплывающих окон защиты, но включает жесткие ограничения платформы на работу с файлами. В результате вызов конструктора Новый Файл() приводит к падению фонового процесса.
---
Если ваша конфигурация «1С:Управление нашей фирмой» находится на поддержке или работает в облачном сервисе (например, 1С:Фреш), категорически не рекомендуется полностью отключать механизмы безопасности. Самым правильным решением является использование механизмов Библиотеки стандартных подсистем (БСП) для программного запроса разрешений.
Рассмотрим, как модифицировать модуль объекта нашей внешней обработки, чтобы она запускалась в безопасном режиме, но имела легальный доступ к файловой системе и интернету. Для этого в функции СведенияОВнешнейОбработке() необходимо программно описать запрашиваемые разрешения.
Проанализируем пример настройки функции СведенияОВнешнейОбработке() с явным запросом разрешений:
Функция СведенияОВнешнейОбработке() Экспорт
ИнформацияОКонтексте = _ПолучитьИнформациюОКонтекстеВыполнения();
РегистрационныеДанные = Новый Структура;
РегистрационныеДанные.Вставить("Наименование", "Обмен с личным кабинетом");
РегистрационныеДанные.Вставить("Информация", "Автоматический обмен заказами");
РегистрационныеДанные.Вставить("Версия", ИнформацияОКонтексте.ВерсияДрайвера);
РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");
// Оставляем безопасный режим включенным!
РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
// Обязательно указываем версию БСП для корректной работы профилей безопасности
РегистрационныеДанные.Вставить("ВерсияБСП", "2.2.2.1");
// Создаем массив для хранения запрашиваемых разрешений
Разрешения = Новый Массив;
// 1. Запрашиваем разрешение на работу с каталогом временных файлов
РазрешениеВременныеФайлы = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
Разрешения.Добавить(РазрешениеВременныеФайлы);
// 2. Запрашиваем разрешение на сетевой доступ к вашему сайту/API
// Замените "api.mysite.ru" на реальный адрес вашего веб-сервиса
РазрешениеСайт = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса("HTTPS", "api.mysite.ru", 443);
Разрешения.Добавить(РазрешениеСайт);
РегистрационныеДанные.Вставить("Разрешения", Разрешения);
Возврат РегистрационныеДанные;
КонецФункции
При добавлении такой обработки в справочник «Дополнительные отчеты и обработки» администратору системы будет выведено стандартное окно БСП с предложением утвердить запрашиваемые разрешения. После подтверждения обработка будет выполняться регламентным заданием в безопасном режиме, но платформа сделает исключение для работы с временными файлами и обращения к указанному сайту.
---
Если использование профилей безопасности кажется вам избыточным или конфигурация сильно кастомизирована, мы можем пойти по пути отключения защиты от опасных действий для конкретного пользователя, под которым выполняются фоновые задачи.
Выполним настройку по шагам:
РоботОбмена. Назначим ему необходимые права (роли) для проведения документов и работы со справочниками УНФ.РоботОбмена в качестве исполнителя.При такой конфигурации регламентное задание будет запускаться в «небезопасном» режиме (параметр БезопасныйРежим = Ложь в регистрационных данных внешней обработки), но платформа больше не будет блокировать его выполнение интерактивными предупреждениями, поскольку у учетной записи отключена защита от опасных действий.
---
В случаях, когда обработка запускается в локальной сети на собственном сервере компании и риски запуска вредоносного кода со стороны пользователей отсутствуют, допускается полное отключение защиты от опасных действий на уровне всего кластера серверов «1С:Предприятие».
Для этого нам понадобится отредактировать конфигурационный файл платформы conf.cfg. Разберем этот процесс подробнее:
C:\Program Files\1cv8\conf\. Если вы используете конкретную версию платформы, путь может выглядеть как C:\Program Files\1cv8\8.3.XX.YYYY\bin\conf\.conf.cfg с помощью любого текстового редактора (например, Блокнота) от имени Администратора.
DisableUnsafeActionProtection=.*
Если требуется отключить защиту только для конкретной информационной базы, вместо шаблона .* укажем ее имя в кластере, например:
DisableUnsafeActionProtection=УНФ_Производство
Агент сервера 1С:Предприятия через консоль управления службами Windows (services.msc).Использование этого метода гарантирует, что любые внешние обработки, запускаемые как интерактивно, так и в фоновом режиме, больше никогда не вызовут предупреждений безопасности платформы.
---
Для удобства выбора оптимального пути решения проблемы проанализируем преимущества и недостатки каждого метода:
| Критерий сравнения | Метод №1 (БСП Разрешения) | Метод №2 (Пользователь ИБ) | Метод №3 (Файл conf.cfg) |
|---|---|---|---|
| Безопасность системы | Максимальная (рекомендуется) | Средняя (контролируемая) | Низкая (не рекомендуется для публичных серверов) |
| Сложность реализации | Требуется доработка кода обработки | Настройка в конфигураторе и режиме предприятия | Доступ к файловой системе сервера приложений |
| Подходит для 1С:Фреш / Облака | Да, единственный допустимый вариант | Нет, права пользователей ограничены | Нет, провайдеры блокируют доступ к conf.cfg |
| Трудозатраты при обновлении платформы | Отсутствуют | Отсутствуют | Иногда требуется повторная настройка при обновлении каталогов установки |
Таким образом, для промышленных баз данных и систем с высокими требованиями к информационной безопасности мы настоятельно рекомендуем использовать Метод №1. Для быстрых внутренних проектов и баз, находящихся на администрировании внутри компании, отлично подойдет Метод №2.