Как отключить защиту от опасных действий в 1С:Предприятии 8.3

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Начиная с версии платформы 8.3.9, в 1С:Предприятии появился встроенный механизм защиты от опасных действий. Его главная цель — обезопасить информационную базу от вредоносного кода, например, вирусов-шифровальщиков, распространяемых во внешних обработках. Однако на практике эта защита часто блокирует работу вполне легитимного софта: внешних печатных форм, отчетов, COM-объектов или сервисных обработок вроде «Инструментов разработчика» (ИР).

Разберем подробнее, почему срабатывает этот механизм и какими способами можно отключить предупреждения и блокировки для локальных и клиент-серверных информационных баз.

Причины срабатывания защиты от опасных действий

Механизм платформы контролирует потенциально опасные операции и выдает предупреждение пользователю при выполнении следующих действий из стороннего или внешнего кода:

  1. Открытие и загрузка внешних обработок с расширением .epf, отчетов .erf и расширений конфигурации .cfe.
  2. Вызов команд операционной системы с помощью функций ЗапуститьПриложение или КомандаСистемы.
  3. Создание и проведение любых операций с COM-объектами через функцию Новый COMОбъект(...).
  4. Загрузка и подключение внешних компонент методом ПодключитьВнешнююКомпоненту.
  5. Программная модификация учетных записей пользователей информационной базы.

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

Способ 1. Отключение защиты в свойствах пользователя ИБ

Это самый быстрый и простой способ для отдельно взятого пользователя. Выполним настройку по шагам:

  1. Запустим конфигуратор информационной базы под пользователем с административными правами.
  2. В главном меню перейдем в раздел Администрирование — Пользователи.
  3. Откроем карточку нужного пользователя и перейдем на вкладку основных свойств.
  4. Снимем флажок Защита от опасных действий.
  5. Сохраним изменения.

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

Способ 2. Отключение через файл конфигурации conf.cfg

Если требуется отключить защиту глобально для всей базы или конкретного сервера без редактирования карточек пользователей, воспользуемся параметром DisableUnsafeActionProtection в файле conf.cfg.

Этот параметр принимают регулярные выражения (маски), разделенные символом точки с запятой ;. Если строка соединения базы совпадает с указанной маской, защита от опасных действий выключается автоматически.

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

DisableUnsafeActionProtection=.*

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

DisableUnsafeActionProtection=test_.*;stage_.*;

Важная особенность клиент-серверного режима: при выполнении кода в фоновых или регламентных заданиях, а также при серверных вызовах настройки текущего пользователя могут не действовать. В этом случае параметр DisableUnsafeActionProtection должен быть обязательно прописан в файле conf.cfg, расположенном в каталоге conf рабочей версии платформы непосредственно на сервере 1С:Предприятия.

Способ 3. Программное управление защитой из кода 1С

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

Рассмотрим пример программного отключения защиты при вызове метода ВнешниеОбработки.Создать():


ОписаниеЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;
ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;

Попытка
    ОбработкаОбъект = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь, ОписаниеЗащиты);
Исключение
    Сообщить("Не удалось загрузить внешнюю обработку: " + ОписаниеОшибки());
КонецПопытки;

Если в конфигурации используется Библиотека Стандартных Подсистем (БСП), можно применить типовую функцию общего назначения:


ИмяВременногоФайла = КаталогВременныхФайлов() + "ВнешняяОбработка.epf";
ДвоичныеДанные = СсылкаНаВПФ.ХранилищеОбработки.Получить();
ДвоичныеДанные.Записать(ИмяВременногоФайла);

Попытка
    ОбработкаОбъект = ВнешниеОбработки.Создать(
        ИмяВременногоФайла, 
        Ложь, 
        ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()
    );
Исключение
    Сообщить("Ошибка создания объекта из временного файла обработки " + ИмяВременногоФайла);
    Возврат Неопределено;
КонецПопытки;

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


ОписаниеЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;
ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;

ИмяОбработки = ВнешниеОбработки.Подключить(ПутьКФайлу, , Ложь, ОписаниеЗащиты);

Способ 4. Массовое отключение защиты для всех пользователей ИБ

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


ПользователиИБ = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ПользовательИБ Из ПользователиИБ Цикл
    ПользовательИБ.ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях = Ложь;
    ПользовательИБ.Записать();
КонецЦикла;

Нюансы работы в типовых конфигурациях и БСП

В типовых решениях (1С:Бухгалтерия, 1С:ERP, 1С:УТ и др.) внешние печатные формы и обработки рекомендуется подключать через стандартный справочник Дополнительные отчеты и обработки. При правильной регистрации внешнего файла администратором система автоматически снимает ограничения платформы и не запрашивает подтверждений у рядовых пользователей при их последующем запуске.

← На главную