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

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

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

Как убрать безопасный режим в 1С при загрузке внешних обработок, расширений и в кластере сервера. Пошаговые способы, риски, проверка результата и ответы на вопросы.

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

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

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

Что такое безопасный режим и когда он включается

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

Типичные ситуации автоматического включения: открытие внешней обработки или отчёта (файлы .epf и .erf), выполнение кода расширения конфигурации, исполнение регламентных заданий в кластере с настроенными профилями безопасности, а также выполнение произвольного кода через метод Выполнить() в некоторых сценариях. В файловых базах ограничения обычно мягче, в клиент-серверных — строже.

Как отключить безопасный режим при открытии внешней обработки

Самая частая задача — запустить внешнюю обработку, которая отказывается работать из-за ограничений. В типовых конфигурациях на базе БСП (Библиотека стандартных подсистем) при открытии файла через «Файл → Открыть» или через подсистему «Дополнительные отчеты и обработки» платформа по умолчанию исполняет код в безопасном режиме.

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

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

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

Отключение безопасного режима в расширениях конфигурации

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

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

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

Безопасный режим на сервере: профили безопасности кластера

В клиент-серверном варианте работы ограничения часто задаются не в конфигурации, а в кластере серверов 1С:Предприятия. Администратор кластера может создать профили безопасности, которые определяют, какие каталоги, COM-объекты, внешние компоненты и приложения разрешено использовать коду, исполняемому на сервере.

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

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

Сравнение вариантов

Снять профиль с базы полностью

Быстро, но снимает защиту со всего серверного кода базы. Подходит для тестовых контуров

Расширить профиль разрешениями

Дольше в настройке, но сохраняет защиту. Рекомендуемый вариант для рабочих баз

Отключить режим в расширении или обработке

Точечное решение для конкретного кода; не влияет на остальные механизмы

Программное управление безопасным режимом в коде

Разработчик может управлять режимом из встроенного языка. Для явного включения и отключения используются методы УстановитьБезопасныйРежим(Истина) и УстановитьБезопасныйРежим(Ложь). Проверить текущее состояние помогает функция БезопасныйРежим(), возвращающая признак активности режима.

Типовой приём для выполнения привилегированного участка кода — обернуть его так:

ТекущийРежим = БезопасныйРежим();

УстановитьБезопасныйРежим(Ложь);

// ... код, требующий полного доступа ...

УстановитьБезопасныйРежим(ТекущийРежим);

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

Частые ошибки и как проверить результат

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

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

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

Типичные ошибки
01
Отключение режима в расширении, когда ограничение задано профилем кластера — ошибка сохраняется
02
Отсутствие перезапуска сеанса после смены настроек расширения — старые параметры продолжают действовать
03
Полное снятие профиля безопасности вместо точечных разрешений — база остаётся без защиты
04
В коде не возвращается исходное состояние режима — весь дальнейший код сеанса работает без защиты
Контрольные точки

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

Повторный запуск обработки
Норма

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

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

Снова сообщение «Операция не разрешена в безопасном режиме»

Функция БезопасныйРежим() в коде
Норма

Возвращает Ложь в нужной точке

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

Возвращает Истина после попытки отключения — режим задан на уровне кластера

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

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

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

Ошибки прав доступа или отказов продолжают фиксироваться

Итог

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

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

Частые вопросы

Как понять, что ошибка вызвана именно безопасным режимом?

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

Почему после снятия флага в расширении ошибка не исчезла?

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

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

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

Опасно ли отключать безопасный режим?

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

Чем безопасный режим отличается от защиты от опасных действий?

Безопасный режим ограничивает возможности исполняемого кода, а защита от опасных действий — это механизм предупреждений пользователя при потенциально рискованных операциях (открытие файлов, запуск приложений). Это разные механизмы: флаг «Защита от опасных действий» в расширении не заменяет и не отменяет безопасный режим.

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

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