Администрирование · 11 мин
Установлен безопасный режим: выполнение операции запрещено в 1С 8.3 — как убрать
Почему в 1С 8.3 появляется ошибка «Установлен безопасный режим. Выполнение операции запрещено» и как отключить безопасный режим для расширений, внешних обработок и кода.
Ошибка «Установлен безопасный режим. Выполнение операции запрещено» в 1С 8.3 появляется, когда платформа блокирует действие, которое код пытается выполнить в ограниченном окружении. Чаще всего с ней сталкиваются при подключении внешних обработок и отчётов, при работе расширений конфигурации, при выполнении кода из полей «Алгоритм» в типовых механизмах (например, в произвольных выражениях СКД или обработчиках событий) и при вызове операций с файловой системой, COM-объектами или внешними компонентами.
Безопасный режим — это штатный защитный механизм платформы. Он запрещает доступ к файловой системе сервера, запуск приложений, загрузку внешних компонент, использование COM и OLE, интернет-соединения и ряд других потенциально опасных операций. Платформа включает его автоматически там, где выполняется код, который не является частью основной конфигурации: во внешних обработках, расширениях без специальных разрешений, в алгоритмах на встроенном языке.
Убрать ошибку можно несколькими способами: снять флаг безопасного режима у конкретного расширения, отключить защиту от опасных действий у пользователя, изменить код с помощью методов УстановитьБезопасныйРежим() или УстановитьОтключениеБезопасногоРежима(), либо перенести опасную операцию в привилегированный контекст. Выбор зависит от того, где именно возникает запрет и кто вы — администратор базы или разработчик.
Что такое безопасный режим и почему операция запрещена
Безопасный режим в 1С — это состояние исполнения кода, при котором платформа запрещает операции, способные повлиять на систему за пределами базы данных. В этом режиме недоступны: чтение и запись файлов на диске, запуск внешних приложений, работа с COM-объектами и OLE, загрузка внешних компонент, создание интернет-соединений и почтовых клиентов, доступ к журналу регистрации и некоторые другие действия.
Платформа включает безопасный режим автоматически в следующих ситуациях: при выполнении внешних обработок и отчётов, при работе расширений конфигурации (если не снят соответствующий флаг), при исполнении алгоритмов на встроенном языке в типовых механизмах, а также при выполнении кода из хранилища значений или строк, переданных извне. Логика проста: любой код, который не входит в основную конфигурацию, считается потенциально недоверенным.
Текст ошибки может отличаться: «Установлен безопасный режим. Выполнение операции запрещено», «Операция не разрешена в безопасном режиме», а также варианты с указанием конкретного метода, например при вызове Записать(), ЗапуститьПриложение() или при создании COMОбъект. По строке, указанной в сообщении, обычно можно определить, какая именно операция заблокирована.
Как быстро убрать ошибку при открытии внешней обработки или отчёта
Если ошибка возникает при открытии внешней обработки или отчёта через «Файл — Открыть» или через дополнительные отчёты и обработки, первое, что стоит проверить, — настройку «Защита от опасных действий» у текущего пользователя. Этот механизм перехватывает попытки выполнить потенциально опасные действия и выводит предупреждение, а в ряде случаев приводит к запрету операции.
- 1Откройте конфигуратор и перейдите: Администрирование — Пользователи.
- 2Откройте карточку нужного пользователя и перейдите на вкладку «Прочее».
- 3Снимите флаг «Защита от опасных действий» и сохраните изменения.
- 4Перезапустите сеанс пользователя и повторно откройте обработку.
- 5Проверьте, что операция выполняется без сообщения о безопасном режиме.
В файловом варианте базы настройка применяется после перезапуска сеанса. В клиент-серверном варианте изменения также вступают в силу для новых сеансов, поэтому простое закрытие формы обработки без переподключения может не помочь — пользователь должен выйти и войти заново.
Альтернативный путь — отключить защиту от опасных действий глобально через параметр командной строки запуска /DisableUnsafeActionProtection или через соответствующий параметр в файле inetcfg.xml. Этот вариант применяют редко, потому что он снимает защиту для всех пользователей и всех баз, использующих данный файл настроек, что снижает общий уровень безопасности.
Как отключить безопасный режим для расширения конфигурации
Если ошибка возникает при работе расширения — например, расширение пытается записать файл, обратиться к COM-объекту или выполнить запрос к внешнему сервису, — причина почти всегда в том, что у расширения установлен флаг «Безопасный режим». По умолчанию он включён для всех новых расширений.
Чтобы снять ограничение, откройте в пользовательском режиме раздел «Администрирование — Печатные формы, отчеты и обработки — Расширения» (в некоторых конфигурациях путь отличается), либо в конфигураторе: «Конфигурация — Расширения конфигурации». В списке расширений найдите нужное и снимите флаг «Безопасный режим». После этого перезапустите сеанс или переподключите расширение.
Обратите внимание на соседние флаги: «Защита от опасных действий» и «Использовать в основных ролях». Если у расширения остаётся включённой защита от опасных действий, отдельные операции могут по-прежнему блокироваться с похожими сообщениями. Для доверенных внутренних расширений обычно снимают оба флага.
Как убрать безопасный режим программно в коде
Разработчику доступны два разных метода, которые часто путают. Метод УстановитьБезопасныйРежим(Ложь) отключает безопасный режим, но только если код выполняется не в контексте, где режим навязан принудительно (например, внешняя обработка, открытая пользователем, всё равно останется в безопасном режиме). Метод действует иначе в разных контекстах и не всегда даёт ожидаемый результат.
Более надёжный инструмент — УстановитьОтключениеБезопасногоРежима(Истина). Этот метод разрешает выполнение опасных операций даже внутри безопасного режима, но работает только из кода конфигурации или расширения, у которого есть соответствующие права. Типовой приём — обернуть опасный участок в пару вызовов:
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьБезопасныйРежим(Ложь);
// Опасная операция, например запись файла
Документ = Новый ТекстовыйДокумент;
Документ.Записать("C:\\Temp\\result.txt");
УстановитьБезопасныйРежим(Истина);
УстановитьОтключениеБезопасногоРежима(Ложь);Важно вернуть режим обратно после выполнения операции. Если оставить режим отключённым, весь последующий код сеанса будет выполняться без ограничений, включая потенциально недоверенные вызовы. Рекомендуется размещать опасный код в общем серверном модуле с признаком «Привилегированный» и минимальной областью действия.
Безопасный режим в фоновых заданиях и на кластере серверов
Отдельный сценарий — ошибка в регламентных и фоновых заданиях. Если задание запускает внешнюю обработку или вызывает код, который обращается к файлам или сети, платформа может включить безопасный режим. Решение — перенести опасную логику в общий модуль конфигурации и вызывать её из задания, а не выполнять внешний код напрямую.
В клиент-серверном варианте дополнительно проверьте свойства информационной базы в консоли кластера: там есть параметры, связанные с профилями безопасности. Если для базы назначен профиль безопасности, операции с файловой системой, COM и интернетом регулируются разрешениями профиля, и обычного отключения безопасного режима недостаточно — нужно добавить соответствующее разрешение в профиль в консоли кластера или в конфигурации через механизм настройки профилей безопасности.
Как выбрать действие
Как проверить результат и типичные ошибки
После применения любого из способов проверьте результат в том же сценарии, где возникала ошибка: тот же пользователь, та же обработка, та же операция. Убедитесь, что сообщение исчезло и операция действительно выполнилась — например, файл создан, данные отправлены, отчёт сформирован. Проверку делайте под рабочим пользователем, а не под администратором с полными правами: у администратора часть ограничений может не проявляться.
Как проверить результат
Операция завершается без сообщения о безопасном режиме, результат (файл, запись, ответ сервиса) присутствует
Ошибка повторяется или появляется новое сообщение о запрете
Пользователь перезаходил в базу после изменения настроек
Настройки меняли, но сеанс не перезапускался — старые ограничения действуют
Нет новых ошибок по событию выполнения кода
В журнале ошибки доступа к файлам или отказ сервера — смотрите профиль безопасности
FAQ
Почему ошибка появляется только у одного пользователя, а у остальных нет?
Скорее всего, у этого пользователя включена «Защита от опасных действий» в карточке пользователя, а у остальных — отключена. Также проверьте состав ролей: различия в правах могут влиять на то, какой код выполняется и в каком контексте.
Можно ли отключить безопасный режим сразу для всей базы?
Отдельного глобального переключателя безопасного режима нет — он включается платформой по контексту исполнения. Глобально можно только отключить защиту от опасных действий через параметр запуска или inetcfg.xml, но это снижает безопасность всех баз и делать это без необходимости не рекомендуется.
УстановитьБезопасныйРежим(Ложь) написал, а ошибка осталась. Почему?
Во внешних обработках и некоторых других контекстах безопасный режим навязан платформой принудительно, и этот метод его не отключает. Используйте УстановитьОтключениеБезопасногоРежима(Истина) из кода конфигурации или расширения, либо меняйте настройки подключения обработки.
Опасно ли снимать безопасный режим у расширения?
Да, если источник расширения не вызывает доверия: код получит доступ к файлам, запуску программ и сети. Для проверенных внутренних расширений это стандартная практика, но перед снятием флага стоит просмотреть код расширения на наличие подозрительных вызовов.
На локальной базе работает, на сервере — ошибка. Что делать?
Проверьте профиль безопасности, назначенный информационной базе в консоли кластера серверов 1С. Даже при отключённом безопасном режиме операции с файлами, COM и интернетом требуют явных разрешений в профиле. Добавьте нужные разрешения и перезапустите сеанс.
Ошибка возникает в типовой конфигурации без доработок. В чём причина?
Типовые механизмы выполняют встроенные алгоритмы (например, в обменах данными, произвольных выражениях, обработчиках) в безопасном режиме. Причина может быть в настройке, содержащей вызов опасной операции, или в профиле безопасности на сервере. Начните с анализа строки кода из текста ошибки и журнала регистрации.
Что важно запомнить
Ошибка «Установлен безопасный режим» — это штатная защита платформы, а не сбой. Снимайте ограничение точечно: у пользователя, у расширения или в конкретном участке кода, всегда перезапускайте сеанс после изменения настроек и проверяйте профиль безопасности на сервере. Не отключайте защиту для кода из непроверенных источников.