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

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

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

Как обойти безопасный режим в 1С при установке расширений: параметр DisableUnsafeActionProtection, роли, профили безопасности кластера и типичные ошибки.

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

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

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

Что именно ограничивает безопасный режим

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

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

Ошибка «Операция не допускается в безопасном режиме»Код пытается выполнить запрещённую операцию

Какая именно операция: файл, COM, интернет, внешняя компонента

Расширение работает у администратора, но не у пользователяДело в ролях, а не в режиме

Наличие у пользователя нужных ролей и права на расширение

Ошибка только в регламентном заданииФоновое задание всегда в безопасном режиме из расширения

Где подключён код: расширение или конфигурация

Снятие флага «Безопасный режим» при подключении расширения

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

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

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

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

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

bsl
Если БезопасныйРежим() Тогда
    УстановитьБезопасныйРежим(Ложь);
КонецЕсли;
// защищённая операция, например запись файла
УстановитьБезопасныйРежим(Истина);

Параметр DisableUnsafeActionProtection

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

Параметр задаётся в файле conf.cfg (для всех баз на компьютере) или в параметре командной строки /DisableUnsafeActionProtection. Значение DisableUnsafeActionProtection=* отключает защиту для всех баз, DisableUnsafeActionProtection=ИмяБазы — только для указанной. Действует настройка на уровне клиентского приложения, а не сервера.

ini
# conf.cfg в каталоге conf платформы
DisableUnsafeActionProtection=*

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

Профили безопасности кластера серверов

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

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

Настройка профиля безопасности
  1. 1
    Откройте консоль администрирования кластера и создайте профиль безопасности
  2. 2
    Разрешите в профиле только нужные операции: каталог, COM или интернет-ресурс
  3. 3
    Укажите профиль в свойствах информационной базы в поле «Профиль безопасности безопасного режима»
  4. 4
    Перезапустите регламентное задание или сеанс и проверьте выполнение операции

Роли и права: когда проблема не в режиме, а в доступе

Частая ситуация: внешняя обработка не запускается у пользователя, и все списывают это на безопасный режим, хотя причина в ролях. Для интерактивного открытия внешних отчётов и обработок пользователю нужна роль «Интерактивное открытие внешних отчетов и обработок» (в типовых конфигурациях на БСП) либо право «Интерактивное открытие внешних обработок» в конфигураторе.

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

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

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

Расширение из проверенного источника не работает в файловой базеСнимите флаг «Безопасный режим» в списке расширений
Нужно дать обработке доступ к одному каталогу на сервереСоздайте профиль безопасности с разрешением на каталог и назначьте базе
Мешает диалог «Операция может быть опасной» на машине разработчикаДобавьте DisableUnsafeActionProtection в conf.cfg только на этом компьютере
Код в регламентном задании падает с ошибкой безопасного режимаПеренесите код из расширения в конфигурацию или используйте профиль безопасности

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

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

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

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

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

Выполнение защищённой операции
Норма

Операция выполняется без ошибки «не допускается в безопасном режиме»

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

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

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

Нет записей об отказе в доступе при выполнении операции

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

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

Список расширений
Норма

У доверенного расширения флаг «Безопасный режим» снят, у остальных — установлен

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

Режим снят у всех расширений подряд

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

Итог

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

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

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

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

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

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

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

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

Опасно ли снимать безопасный режим с расширения от фирмы «1С»?

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

Работает ли DisableUnsafeActionProtection в веб-клиенте?

Параметр действует на клиентское приложение, поэтому в веб-клиенте его влияние ограничено: многие опасные операции там в принципе недоступны из-за ограничений браузера. Основное применение параметра — толстый и тонкий клиенты.

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

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