При работе со старыми редакциями конфигураций (например, «Бухгалтерия предприятия» редакции 2.0) на современных версиях платформы 1С:Предприятие 8.3 пользователи нередко сталкиваются с ситуацией, когда при каждом входе в программу появляется диалоговое окно с предупреждением о выполнении потенциально опасного действия. В окне содержится запрос на открытие внешней обработки, имя и путь к которой постоянно меняются. Проанализируем природу этого поведения платформы и рассмотрим рабочие способы устранения назойливого сообщения.
Разберем детально, почему возникает данная ситуация и почему подозрения на вирусную активность в подавляющем большинстве случаев беспочвенны:
%TEMP%) под динамическим случайным именем, после чего вызывается через метод ВнешниеОбработки.Создать()..epf), отчетов (.erf) и подключение внешних компонент как потенциальную угрозу и требует подтверждения от пользователя.Обычно для отключения предупреждений достаточно зайти в меню Администрирование → Пользователи в Конфигураторе и в свойствах учетной записи снять флаг Защита от опасных действий. Однако в конфигурациях уровня БП 2.0 этот элемент управления в интерфейсе Конфигуратора отсутствует.
Выясним причину: видимость этого флага в диалоге свойств пользователя напрямую зависит от свойства конфигурации Режим совместимости. Если в конфигурации установлен режим совместимости с версиями ниже 8.3.9 (например, «Версия 8.2.13» или «Версия 8.3.8»), Конфигуратор скрывает данную опцию из визуального интерфейса, хотя сама работающая платформа 8.3 продолжает применять правила безопасности.
Ниже разберем несколько вариантов решения этой проблемы.
Если появление окна связано именно с регламентной проверкой обновлений конфигурации через Интернет, самый простой способ без вмешательства в системные файлы — отключить эту опцию в настройках программы:
Сервис → Интернет-поддержка пользователей → Автоматическая проверка обновлений (или Настройка проверки обновлений).Рассмотрим административный способ, который позволяет централизованно отключить предупреждения на уровне платформы для конкретных баз или для всех баз сразу. Для этого отредактируем конфигурационный файл conf.cfg:
conf.cfg. По умолчанию он располагается в каталоге установки 1С: C:\Program Files\1cv8\conf\ (для 64-битной платформы) или C:\Program Files (x86)\1cv8\conf\ (для 32-битной платформы).
DisableUnsafeActionProtection=.*
Для отключения проверки только в определенных файловых базах по маске пути:
DisableUnsafeActionProtection=File="D:\\Bases\\.*";
Поскольку свойство безопасности существует в объектной модели платформы независимо от установленного режима совместимости конфигурации, снимем признак защиты программно с помощью внешней обработки или через групповую обработку данных. Напишем и выполним следующий код:
Для Каждого ТекПользователь Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
ТекПользователь.ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях = Ложь;
ТекПользователь.Записать();
КонецЦикла;
Данный фрагмент перебирает всех пользователей информационной базы и программно отключает свойство ПредупреждатьОбОпасныхДействиях, после чего предупреждения перестают появляться при интерактивном входе в программу под данными учетными записями.
Если конфигурация снята с поддержки и находится на доработке, проанализируем место вызова внешней обработки. При создании объекта через менеджер ВнешниеОбработки разработчик может явно передать параметры защиты.
Посмотрим на пример безопасного вызова, где в третьем параметре метода Создать() или Подключить() передается специальный объект ОписаниеЗащитыОтОпасныхДействий с отключенным предупреждением:
Защита = Новый ОписаниеЗащитыОтОпасныхДействий;
Защита.ПредупреждатьОбОпасныхДействиях = Ложь;
ОбработкаОбъект = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь, Защита);
Использование любого из приведенных способов позволяет устранить постоянные предупреждения при запуске программы и обеспечить комфортную работу пользователей.