Как исправить ошибку «Установлен безопасный режим. Выполнение операции запрещено» при открытии внешней обработки в 1С?

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

При интерактивном запуске внешней обработки через меню «Файл — Открыть» обычные пользователи (без полных прав или роли «Администратор системы») могут столкнуться с ошибкой вида: «Установлен безопасный режим. Выполнение операции запрещено». Ошибка часто возникает при попытке работы с файловой системой на сервере, например, при вызове Новый Файл(...), работе с COM-объектами или сетевыми ресурсами.

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

Почему возникает ошибка безопасного режима

Проанализируем механизм работы платформы при интерактивном открытии файлов:

  1. Принудительный безопасный режим: Когда пользователь без административных прав открывает внешний файл через главное меню, платформа 1С автоматически и принудительно включает безопасный режим исполнения кода на сервере.
  2. Защита от опасных действий vs Безопасный режим: Снятие флага «Защита от опасных действий» в карточке пользователя в конфигураторе отключает только предупреждающие диалоговые окна при открытии файлов, но не отменяет сам безопасный режим исполнения кода на сервере.
  3. Ограничения безопасного режима: На сервере блокируются обращения к локальным файлам (конструкторы Новый Файл, функции копирования, удаления и чтения файлов), запуск внешних приложений через ЗапуститьПриложение(), обращение к внешним компонентам, COM-объектам, а также вызовы привилегированного режима.

Способ 1. Регистрация в справочнике «Дополнительные отчеты и обработки» (Рекомендуемый)

Штатным и наиболее правильным способом предоставления доступа пользователям является подключение обработки через механизмы Библиотеки Стандартных Подсистем (БСП). В этом случае права на запуск вне безопасного режима регулируются администратором базы данных.

Разберем по шагам, как подготовить и подключить обработку:

  1. Откроем модуль объекта внешней обработки и проверим экспортную функцию СведенияОВнешнейОбработке().
  2. Укажем параметр БезопасныйРежим = Ложь в структуре параметров регистрации.

Посмотрим на пример заполнения функции:


Функция СведенияОВнешнейОбработке() Экспорт

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

КонецФункции

После подготовки кода администратор системы загружает обработку в разделе «Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки» и назначает права доступа необходимым пользователям.

Способ 2. Перенос операций с файлами на сторону клиента

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

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

Посмотрим на пример клиентского кода:


&НаКлиенте
Процедура ПроверитьФайлПередОбработкой(ПутьКФайлу)

    ФайлНаКлиенте = Новый Файл(ПутьКФайлу);
    Если ФайлНаКлиенте.Существует() Тогда
        // Передаем данные на сервер для дальнейшей обработки
        ПоместитьФайлНаСерверИОбработать(ПутьКФайлу);
    Иначе
        ПоказатьПредупреждение(, "Указанный файл не найден на диске!");
    КонецЕсли;

КонецПроцедуры

Способ 3. Использование расширения конфигурации

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

  1. Создадим новое расширение или откроем существующее.
  2. Добавим необходимую обработку в состав расширения.
  3. В свойствах расширения в конфигураторе снимем флаги «Безопасный режим» и «Защита от опасных действий».
  4. Применим изменения в информационной базе. Пользователи смогут запускать форму напрямую из интерфейса без ограничений безопасного режима.
← На главную