Безопасный режим запрещает вызов небезопасных методов в 1С — Решение
- Исключение:
Безопасный режим запрещает вызов небезопасных методов (или обращение к привилегированным модулям). - Сбой выполнения дополнительной обработки, отчета или расширения конфигурации.
- Блокировка методов
ЗапуститьПриложение(),ПодключитьВнешнююКомпоненту(),УстановитьПривилегированныйРежим().
1. Отключение безопасного режима при программном подключении
Если внешняя обработка подключается программно через ВнешниеОбработки.Создать(), явно передайте параметр отключения безопасного режима (требуются административные права):
// 1. Подключение внешней обработки без безопасного режима
ИмяФайла = "C:\Addins\HeavyExport.epf";
// Второй параметр = Ложь (Отключение Безопасного режима)
ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
ОбработкаОбъект.ВыполнитьЭкспортДанных();2. Настройка безопасного режима в справочнике БСП
В пользовательском режиме типовых конфигураций:
- Перейдите в НСИ и Администрирование -> Печатные формы, отчеты и обработки -> Дополнительные отчеты и обработки.
- Откройте карточку проблемной обработки.
- Установите режим безопасности в положение С подтверждением пользователя или укажите профиль безопасности с расширенными правами доступа.
3. Использование перехода в безопасный режим в коде
// Программное управление безопасным режимом
УстановитьБезопасныйРежим(Ложь);
// Вызов методов работы с файлами ОС
КопироватьФайл("C:\src.txt", "C:\dst.txt");
УстановитьБезопасныйРежим(Истина); Частые вопросы (FAQ)
Какие операции запрещены в безопасном режиме 1С?
Запрещены: вызов привилегированных общих модулей, использование COM-объектов, подключение внешних компонент, выполнение системных команд ОС (ЗапуститьПриложение), прямой доступ к файловой системе вне разрешенных папок.
Может ли расширение конфигурации отключить безопасный режим?
Да, в свойствах расширения в Конфигураторе необходимо снять флаг 'Безопасный режим' и применить изменения (требуются права администратора кластера).
Почему УстановитьПривилегированныйРежим(Истина) не работает в безопасном режиме?
Безопасный режим имеет более высокий приоритет изоляции. Платформа блокирует включение привилегированного режима для защиты ядра базы данных от несанкционированного доступа.
Как безопасно передать данные из внешней обработки во внутренний модуль?
Вынесите исполнение привилегированного кода в стандартный общий модуль конфигурации с флагом 'Вызов сервера' и обращайтесь к нему через API.