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

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

Безопасный режим в 1С: что это такое и как с ним работать

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

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

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

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

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

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

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

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

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

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

  • Загрузка внешних отчётов и обработок через механизм «Дополнительные отчеты и обработки» — код исполняется в безопасном режиме, если иное не разрешено в настройках.
  • Выполнение расширений конфигурации, если в свойствах расширения установлен признак безопасного режима.
  • Исполнение кода правил обмена данными (Конвертация данных) при загрузке и выгрузке.
  • Выполнение обработчиков обновления и ряда регламентных операций в некоторых сценариях.
  • Работа в сервисе (облачном режиме), где безопасный режим — обязательное условие для стороннего кода.
Ошибка «Операция не разрешена в безопасном режиме»Прямое срабатывание защиты

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

Обработка не видит файлы на дискеБлокировка файловой системы

Проверить, загружается ли обработка через «Дополнительные отчеты и обработки»

Ошибки прав доступа в расширенииПривилегированный режим игнорируется

Проверить флаг безопасного режима в свойствах расширения

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

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

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

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

Безопасный режим в расширениях конфигурации

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

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

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

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

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

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

Управление безопасным режимом программно

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

bsl
Если БезопасныйРежим() Тогда
    Сообщить("Код исполняется в безопасном режиме");
КонецЕсли;

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

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

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

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

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

FAQ: частые вопросы о безопасном режиме 1С

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

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

Почему обработка работала, а после обновления перестала?

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

Можно ли разрешить одну внешнюю компоненту, не отключая защиту полностью?

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

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

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

Почему в безопасном режиме не работает привилегированный режим?

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

Итог

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

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