При работе со справочником Дополнительные отчеты и обработки пользователи и администраторы часто сталкиваются с ситуацией: параметр DisableUnsafeActionProtection прописан в файле конфигурации conf.cfg, но при нажатии кнопки Загрузить из файла система всё равно выводит диалоговое окно с предупреждением о безопасности.
При этом, если открывать тот же самый файл обработки через меню Файл — Открыть, никакие предупреждения не выходят. Проанализируем, почему возникает различие в поведении программы и как корректно убрать это диалоговое окно.
Выясним, почему стандартные средства платформы не всегда срабатывают при загрузке файлов через интерфейс типовой конфигурации. Строка DisableUnsafeActionProtection=.* в файле conf.cfg и снятие флага Защита от опасных действий у пользователя в Конфигураторе отключают только интерактивные платформенные предупреждения при прямом открытии файлов.
Когда файл загружается в справочник Дополнительные отчеты и обработки, задействуются механизмы Библиотеки Стандартных Подсистем (БСП) и программный метод Подключить() менеджеров ВнешниеОбработки или ВнешниеОтчеты. Подсистема безопасности БСП самостоятельно проверяет подлинность и параметры защиты, генерируя собственное окно подтверждения, независимо от настроек файла conf.cfg.
Рассмотрим, как менялся механизм подключения внешних модулей в типовых конфигурациях (например, 1С:Управление торговлей). В более ранних версиях БСП вызов метода подключения выполнялся без передачи описания защиты:
Результат = ВнешниеОтчеты.Подключить(АдресВоВременномХранилище, ПараметрыПодключения.ИмяОбъекта, БезопасныйРежим);
В свежих версиях подсистемы перед подключением внешнего объекта выполняется проверка наличия защиты и передача специального параметра отключения предупреждений:
Если ОбщегоНазначения.ЕстьЗащитаОтОпасныхДействий() Тогда
ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки, , , ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());
КонецЕсли;
Если вы разрабатываете собственный механизм загрузки или дорабатываете конфигурацию, используйте объект ОписаниеЗащитыОтОпасныхДействий и передавайте его в метод Подключить():
ОписаниеЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;
ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;
ИмяМодуля = ВнешниеОбработки.Подключить(ПутьКФайлу, , Ложь, ОписаниеЗащиты);
Разберем вариант отключения предупреждений без изменения программного кода конфигурации. В БСП предусмотрена специальная роль, управляющая правами на открытие внешних файлов без лишних вопросов системы.
ОткрытиеВнешнихОтчетовИОбработок (Открытие внешних отчетов и обработок).Посмотрим на пример кода, с помощью которого можно отключить предупреждения об опасных действия для всех пользователей информационной базы на уровне их параметров безопасности:
Для Каждого ТекущийПользователь Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
ТекущийПользователь.ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях = Ложь;
ТекущийПользователь.Записать();
КонецЦикла;
Обратим внимание на разграничение понятий Защита от опасных действий и Безопасный режим. Отключение интерактивного предупреждения о безопасности не отменяет ограничений безопасного режима платформы.
Если при подключении внешнего отчета или обработки установлен флаг БезопасныйРежим = Истина, обработка не сможет выполнять следующие операции:
Если внешнему модулю требуются эти возможности, необходимо отключить безопасный режим в карточке элемента справочника Дополнительные отчеты и обработки или использовать профили безопасности кластера серверов 1С.