Тип: Булево. Если установлено в значение Ложь, будет отключена защита от опасных действий. При включенном механизме защиты "1С:Предприятие" выдает пользователю предупреждение о загрузке внешнего исполняемого кода, ранее еще не загружавшегося пользователем. После загрузки внешнего модуля внутри его кода разрешается исполнение всех потенциально опасных команд. Рекомендуется устанавливать значение Ложь, если только разработчик конфигурации полностью уверен в источнике происхождения загружаемого кода. При исполнении из кода внешней обработки, отчета или расширения, данный параметр игнорируется. Значение по умолчанию - Истина.
Полное описание, параметры и ограничения
ОписаниеЗащитыОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях (UnsafeOperationProtectionDescription.UnsafeOperationWarnings)
ОписаниеЗащитыОтОпасныхДействий (UnsafeOperationProtectionDescription)
ПредупреждатьОбОпасныхДействиях (UnsafeOperationWarnings)
Доступен, начиная с версии 8.3.8.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Если установлено в значение Ложь, будет отключена защита от опасных действий.
При включенном механизме защиты "1С:Предприятие" выдает пользователю предупреждение о загрузке внешнего исполняемого кода, ранее еще не загружавшегося пользователем. После загрузки внешнего модуля внутри его кода разрешается исполнение всех потенциально опасных команд.
Рекомендуется устанавливать значение Ложь, если только разработчик конфигурации полностью уверен в источнике происхождения загружаемого кода. При исполнении из кода внешней обработки, отчета или расширения, данный параметр игнорируется.
Значение по умолчанию - Истина.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.8.
Методическая информация
Практические примеры
Прочитать защиту, роли и участие в РИБ, не отключая их
Исследуем настройки собственной минимальной учебной добавки. Безопасный режим может быть Булево или строкой профиля; число основных ролей не равно числу пользователей.
Где и как запускать
Полный серверный модуль собственной УчебнаяКонфигурацияСинтаксиса. Чтение своего расширения, без его установки/обновления кодом.
Подготовка
Создайте отдельную пустую учебную конфигурацию с именем УчебнаяКонфигурацияСинтаксиса. Защитная проверка имени не допускает выполнение этих уроков в КА2, УТ или другой рабочей конфигурации.
В Конфигураторе этой учебной базы вручную создайте минимальное расширение УчебноеРасширениеСинтаксиса с назначением Дополнение, синонимом Учебное расширение и версией 1.0. Не добавляйте бизнес-код или новые таблицы.
Оставьте безопасный режим и защиту от опасных действий включёнными; не выдавайте через расширение дополнительные основные роли всем пользователям. Установите расширение только в собственной учебной базе и начните новый сеанс.
В серверном общем модуле УчебныеЗадачи разместите полный модуль одного урока. Запускайте свою серверную команду с правами, разрешёнными администратором учебной базы. Код не переключает привилегированный режим.
Примеры только читают паспорт, данные и диагностику. Они не записывают/удаляют расширение, не экспортируют CFE на диск и не отключают защиту.
Процедура ВыполнитьПример() Экспорт
Перечень = РасширенияКонфигурации.Получить();
Учебное = Неопределено;
Для Каждого Расширение Из Перечень Цикл
Если Расширение.Имя = "УчебноеРасширениеСинтаксиса" Тогда
Учебное = Расширение;
Прервать;
КонецЕсли;
КонецЦикла;
Если Учебное = Неопределено Тогда
ВызватьИсключение "Сначала подготовьте только своё минимальное УчебноеРасширениеСинтаксиса";
КонецЕсли;
Сообщить("Активно: " + Строка(Учебное.Активно));
Безопасность = Учебное.БезопасныйРежим;
Если ТипЗнч(Безопасность) = Тип("Булево") Тогда
Сообщить("Безопасный режим включён: " + Строка(Безопасность));
ИначеЕсли ТипЗнч(Безопасность) = Тип("Строка") Тогда
Сообщить("Задан профиль безопасного режима: " + Строка(НЕ ПустаяСтрока(Безопасность)));
КонецЕсли;
Защита = Учебное.ЗащитаОтОпасныхДействий;
Сообщить("Предупреждения об опасных действиях: " + Строка(Защита.ПредупреждатьОбОпасныхДействиях));
Сообщить("Основных ролей расширения: " + Строка(Учебное.ОсновныеРоли.Количество()));
Сообщить("Основные роли для всех пользователей: " + Строка(Учебное.ИспользоватьОсновныеРолиДляВсехПользователей));
Сообщить("Участвует в РИБ: " + Строка(Учебное.ИспользуетсяВРаспределеннойИнформационнойБазе));
Если Учебное.ГлавныйУзел = Неопределено Тогда
Сообщить("Главный узел расширения не определён");
Иначе
Сообщить("Ссылка главного узла определена; обмен не запускается");
КонецЕсли;
КонецПроцедурыРазбор по шагам
Активно относится к настройке расширения, не к успешному прохождению конкретного теста формы или обмена.
БезопасныйРежим имеет составной тип Строка/Булево. Не сравниваем строку профиля с Истина и не отключаем режим ради доступа к данным.
ЗащитаОтОпасныхДействий — отдельный объект описания. Читаем его ПредупреждатьОбОпасныхДействиях без изменения настройки.
ОсновныеРоли — фиксированный массив назначений, а ИспользоватьОсновныеРолиДляВсехПользователей — отдельный флаг. Это не количество пользователей и не полная проверка их эффективных прав.
Участие в РИБ и ГлавныйУзел читаются отдельно. Неопределено обрабатывается до возможного обращения к ссылке; ни один обмен не запускается.
Как проверить результат
При подготовке по инструкции предупреждения и безопасность не отключены. Остальные значения выводятся фактически, без выдуманной статистики пользователей.
В коде нет присваивания настроек защиты или добавления роли.
Ожидаемый результат
Собраны независимые признаки безопасности и распространения своего расширения.
На что обратить внимание
Отключение безопасного режима — не диагностическая проверка.
Основные роли расширения не описывают все роли и RLS текущего пользователя.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Сохранить предупреждения об опасных действиях в черновике
В собственном описании явно оставляем предупреждение включённым. Это не выдача разрешения на внешний код и не отключение защиты рабочего пользователя.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Используйте отдельную учебную базу с именем конфигурации Учебная85. Работайте под учебным администратором, которому доступно чтение и создание описаний пользователей.
Создайте серверный общий модуль УчебныеЗадачи. Фрагмент вставьте в тело своей экспортной процедуры и запустите учебной командой.
СоздатьПользователя создаёт описание, не запись списка пользователей. В коде намеренно отсутствуют Записать и Удалить: права, пароли и аутентификация существующих людей не меняются.
Не добавляйте Записать к этим черновикам: для реального создания учётной записи нужны отдельная проверка ролей, способов входа и действующих политик.
УчебноеИмя = "Черновик_" + Строка(Новый УникальныйИдентификатор);
Если ПользователиИнформационнойБазы.НайтиПоИмени(УчебноеИмя) <> Неопределено Тогда
ВызватьИсключение "Учебное имя уже занято: черновик не создаётся";
КонецЕсли;
Черновик = ПользователиИнформационнойБазы.СоздатьПользователя();
Черновик.Имя = УчебноеИмя;
Черновик.ПолноеИмя = "Учебный незаписанный пользователь";
Черновик.ПоказыватьВСпискеВыбора = Ложь;
Черновик.АутентификацияСтандартная = Ложь;
Черновик.АутентификацияОС = Ложь;
Предупреждения = Черновик.ЗащитаОтОпасныхДействий;
Предупреждения.ПредупреждатьОбОпасныхДействиях = Истина;
Черновик.ЗащитаОтОпасныхДействий = Предупреждения;
Сообщить(Черновик.ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях);
Сообщить(Предупреждения.ПредупреждатьОбОпасныхДействиях);
Сообщить(ПользователиИнформационнойБазы.НайтиПоИмени(УчебноеИмя) = Неопределено);
Сообщить(Черновик.УникальныйИдентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"));Разбор по шагам
ЗащитаОтОпасныхДействий возвращает описание настройки предупреждений пользователя.
Работаем с объектом нового незаписанного описания, не с ТекущийПользователь и не с найденным сотрудником.
ПредупреждатьОбОпасныхДействиях оставляем Истина: упражнение не учит отключению предупреждений.
Внешняя обработка, расширение или опасная функция не запускаются; настоящий диалог предупреждения проверяется отдельным сценарием.
Как проверить результат
Две проверки Истина: оба пути показывают включённое предупреждение.
В текущем сеансе не появляется новый диалог и не выдаётся разрешение на внешний код.
Две последние проверки Истина: имя не появилось в списке, UUID черновика остался нулевым.
Ожидаемый результат
Черновик подготовлен с включённым предупреждением об опасных действиях.
На что обратить внимание
Настройка предупреждения не является песочницей и не гарантирует безопасность произвольной обработки.
Включённый флаг незаписанного описания не меняет настройки защиты уже работающего пользователя.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.