К статье
Практический материал

Администрирование · 11 мин

Установлен безопасный режим: выполнение операции запрещено в 1С 8.3 — как убрать

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

Ошибка «Установлен безопасный режим. Выполнение операции запрещено» в 1С 8.3 появляется, когда платформа блокирует действие, которое код пытается выполнить в ограниченном окружении. Чаще всего с ней сталкиваются при подключении внешних обработок и отчётов, при работе расширений конфигурации, при выполнении кода из полей «Алгоритм» в типовых механизмах (например, в произвольных выражениях СКД или обработчиках событий) и при вызове операций с файловой системой, COM-объектами или внешними компонентами.

Безопасный режим — это штатный защитный механизм платформы. Он запрещает доступ к файловой системе сервера, запуск приложений, загрузку внешних компонент, использование COM и OLE, интернет-соединения и ряд других потенциально опасных операций. Платформа включает его автоматически там, где выполняется код, который не является частью основной конфигурации: во внешних обработках, расширениях без специальных разрешений, в алгоритмах на встроенном языке.

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

Что такое безопасный режим и почему операция запрещена

Безопасный режим в 1С — это состояние исполнения кода, при котором платформа запрещает операции, способные повлиять на систему за пределами базы данных. В этом режиме недоступны: чтение и запись файлов на диске, запуск внешних приложений, работа с COM-объектами и OLE, загрузка внешних компонент, создание интернет-соединений и почтовых клиентов, доступ к журналу регистрации и некоторые другие действия.

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

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

Как быстро убрать ошибку при открытии внешней обработки или отчёта

Если ошибка возникает при открытии внешней обработки или отчёта через «Файл — Открыть» или через дополнительные отчёты и обработки, первое, что стоит проверить, — настройку «Защита от опасных действий» у текущего пользователя. Этот механизм перехватывает попытки выполнить потенциально опасные действия и выводит предупреждение, а в ряде случаев приводит к запрету операции.

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

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

Альтернативный путь — отключить защиту от опасных действий глобально через параметр командной строки запуска /DisableUnsafeActionProtection или через соответствующий параметр в файле inetcfg.xml. Этот вариант применяют редко, потому что он снимает защиту для всех пользователей и всех баз, использующих данный файл настроек, что снижает общий уровень безопасности.

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

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

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

Обратите внимание на соседние флаги: «Защита от опасных действий» и «Использовать в основных ролях». Если у расширения остаётся включённой защита от опасных действий, отдельные операции могут по-прежнему блокироваться с похожими сообщениями. Для доверенных внутренних расширений обычно снимают оба флага.

Как убрать безопасный режим программно в коде

Разработчику доступны два разных метода, которые часто путают. Метод УстановитьБезопасныйРежим(Ложь) отключает безопасный режим, но только если код выполняется не в контексте, где режим навязан принудительно (например, внешняя обработка, открытая пользователем, всё равно останется в безопасном режиме). Метод действует иначе в разных контекстах и не всегда даёт ожидаемый результат.

Более надёжный инструмент — УстановитьОтключениеБезопасногоРежима(Истина). Этот метод разрешает выполнение опасных операций даже внутри безопасного режима, но работает только из кода конфигурации или расширения, у которого есть соответствующие права. Типовой приём — обернуть опасный участок в пару вызовов:

bsl
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьБезопасныйРежим(Ложь);

// Опасная операция, например запись файла
Документ = Новый ТекстовыйДокумент;
Документ.Записать("C:\\Temp\\result.txt");

УстановитьБезопасныйРежим(Истина);
УстановитьОтключениеБезопасногоРежима(Ложь);

Важно вернуть режим обратно после выполнения операции. Если оставить режим отключённым, весь последующий код сеанса будет выполняться без ограничений, включая потенциально недоверенные вызовы. Рекомендуется размещать опасный код в общем серверном модуле с признаком «Привилегированный» и минимальной областью действия.

Безопасный режим в фоновых заданиях и на кластере серверов

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

В клиент-серверном варианте дополнительно проверьте свойства информационной базы в консоли кластера: там есть параметры, связанные с профилями безопасности. Если для базы назначен профиль безопасности, операции с файловой системой, COM и интернетом регулируются разрешениями профиля, и обычного отключения безопасного режима недостаточно — нужно добавить соответствующее разрешение в профиль в консоли кластера или в конфигурации через механизм настройки профилей безопасности.

Маршрут решения

Как выбрать действие

Ошибка при открытии внешней обработки обычным пользователемСнимите «Защиту от опасных действий» в карточке пользователя и перезапустите сеанс
Ошибка в работе расширения конфигурацииСнимите флаг «Безопасный режим» у расширения или локально отключите режим в коде
Ошибка в собственном коде конфигурацииОберните операцию в УстановитьОтключениеБезопасногоРежима(Истина) и верните режим после выполнения
Ошибка только на сервере 1С, локально всё работаетПроверьте профиль безопасности в консоли кластера и добавьте нужные разрешения

Как проверить результат и типичные ошибки

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

Контрольные точки

Как проверить результат

Повторное выполнение операции
Норма

Операция завершается без сообщения о безопасном режиме, результат (файл, запись, ответ сервиса) присутствует

Тревожный признак

Ошибка повторяется или появляется новое сообщение о запрете

Сеанс пользователя
Норма

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

Тревожный признак

Настройки меняли, но сеанс не перезапускался — старые ограничения действуют

Журнал регистрации
Норма

Нет новых ошибок по событию выполнения кода

Тревожный признак

В журнале ошибки доступа к файлам или отказ сервера — смотрите профиль безопасности

Типичные ошибки
01
Снятие флага без перезапуска сеанса — изменения не применяются, и кажется, что способ не работает.
02
Использование УстановитьБезопасныйРежим(Ложь) во внешней обработке — платформа игнорирует вызов, потому что режим навязан принудительно.
03
Отключение защиты глобально для всех пользователей вместо точечной настройки — снижается защита всей системы.
04
Отключённый режим не возвращается обратно в коде — последующий недоверенный код выполняется без ограничений.
05
Игнорирование профиля безопасности на кластере — локально всё работает, а на сервере операция по-прежнему запрещена.

FAQ

Почему ошибка появляется только у одного пользователя, а у остальных нет?

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

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

Отдельного глобального переключателя безопасного режима нет — он включается платформой по контексту исполнения. Глобально можно только отключить защиту от опасных действий через параметр запуска или inetcfg.xml, но это снижает безопасность всех баз и делать это без необходимости не рекомендуется.

УстановитьБезопасныйРежим(Ложь) написал, а ошибка осталась. Почему?

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

Опасно ли снимать безопасный режим у расширения?

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

На локальной базе работает, на сервере — ошибка. Что делать?

Проверьте профиль безопасности, назначенный информационной базе в консоли кластера серверов 1С. Даже при отключённом безопасном режиме операции с файлами, COM и интернетом требуют явных разрешений в профиле. Добавьте нужные разрешения и перезапустите сеанс.

Ошибка возникает в типовой конфигурации без доработок. В чём причина?

Типовые механизмы выполняют встроенные алгоритмы (например, в обменах данными, произвольных выражениях, обработчиках) в безопасном режиме. Причина может быть в настройке, содержащей вызов опасной операции, или в профиле безопасности на сервере. Начните с анализа строки кода из текста ошибки и журнала регистрации.

Итог

Что важно запомнить

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