При работе в современных конфигурациях на платформе 1С:Предприятие 8.3 (таких как УТ 11.5, ERP или КА) разработчики и пользователи часто сталкиваются с назойливым окном: «Предупреждение безопасности. Открывается внешняя обработка...». Это механизм защиты от опасных действий, внедренный фирмой 1С для предотвращения запуска вредоносного кода. Однако в процессе разработки и отладки, когда файл меняется десятки раз в час, это окно существенно замедляет работу. Рассмотрим подробнее, как работает этот механизм и какими способами можно отключить или обойти это предупреждение.
Часто у начинающих разработчиков возникает соблазн отключить защиту программно прямо в коде самой обработки. Проанализируем типичную попытку реализации такой логики:
&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
ТекПользователь = ПользователиКлиент.ТекущийПользователь;
// Попытка программно выключить защиту
ТекПользователь.ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях = Ложь;
ТекПользователь.Записать();
// ... выполнение кода обработки ...
// Возвращаем защиту обратно
ТекПользователь.ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях = Истина;
ТекПользователь.Записать();
КонецПроцедуры
Выясним причину, почему этот код не сработает. Во-первых, если бы подозрительный код мог сам отключать проверку безопасности, смысл этой защиты полностью бы терялся. Платформа блокирует изменение свойств объекта ПользовательИнформационнойБазы из кода, запущенного в контексте «подозрительной» обработки. Во-вторых, настройки защиты пользователя применяются только в момент установки сеанса. Даже если изменить флаг в базе данных, изменения вступят в силу только после перезапуска 1С.
Если вы занимаетесь отладкой и вам мешают постоянные вопросы платформы, разберем, как отключить их для конкретного пользователя. Этот метод является самым простым и эффективным для среды разработки.
После этого при открытии любых файлов через Файл — Открыть платформа перестанет задавать уточняющие вопросы этому конкретному пользователю. Помните, что это снижает общую безопасность системы, поэтому данный метод не рекомендуется использовать для рядовых пользователей в рабочей базе.
Разберем ситуацию, когда вам нужно, чтобы внешняя печатная форма (ВПФ) или обработка работала у всех пользователей без предупреждений, но при этом вы не хотите отключать защиту глобально. Правильный путь в типовых конфигурациях (БСП) — это использование справочника ДополнительныеОтчетыИОбработки.
Когда обработка запускается через этот справочник, она считается «доверенной». Рассмотрим, как правильно подготовить код модуля объекта обработки для регистрации:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
// Указываем тип (ПечатнаяФорма, ДополнительнаяОбработка и т.д.)
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Наименование = "Моя внешняя печатная форма";
// Ключевой параметр для доступа к ресурсам
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
// Добавление команд и прочая логика
// ...
Возврат ПараметрыРегистрации;
КонецФункции
Установка параметра БезопасныйРежим = Ложь позволяет обработке выполнять действия, которые обычно запрещены (например, работа с файловой системой или COM-объектами). При загрузке такой обработки в базу администратор один раз нажимает кнопку «Настроить разрешения», подтверждая доверие этому коду, и в дальнейшем пользователи работают без лишних окон.
Проанализируем ситуацию, когда вы работаете с множеством баз и вам нужно отключить проверку безопасности на всем компьютере сразу. Для этого существует специальный параметр в файле conf.cfg.
Файл обычно располагается в каталоге C:\Program Files\1cv8\conf (или в папке конкретной версии платформы). Откройте его блокнотом и добавьте следующую строку:
DisableModulesQuestioning=1
Эта настройка полностью отключает механизм «Защиты от опасных действий» для всех информационных баз, запускаемых на данном компьютере. Это крайне удобно для серверов разработки или рабочих станций программистов.
Выясним причину, почему вопрос безопасности иногда повторяется, даже если вы один раз уже нажали «Да». Платформа 1С запоминает ваш выбор не для имени файла, а для его хеш-суммы (уникального отпечатка содержимого).
Рассмотрим процесс:
Test.epf.Поэтому при активной разработке через Файл — Открыть предупреждение будет появляться после каждого сохранения изменений. В этом случае помогут только методы с отключением флажка в Конфигураторе или правка conf.cfg.
Если ваша обработка обращается к внешним сайтам (например, для генерации QR-кодов или получения курсов валют), платформа может выдавать предупреждение о доступе к интернет-ресурсу. Чтобы этого избежать, можно настроить список доверенных сайтов.
В файле conf.cfg можно прописать параметр TrustedSites, указав маски разрешенных адресов. Это позволит сохранить общий высокий уровень безопасности, разрешив обращения только к проверенным API.
Также стоит помнить о Профилях безопасности в серверном варианте работы. Если ваша база работает в кластере, администратор может создать профиль безопасности, в котором явно разрешены внешние обработки, и назначить его вашей базе через консоль администрирования серверов 1С.
Подводя итог, выбор метода зависит от вашей роли: разработчикам удобнее всего использовать conf.cfg или настройки пользователя в Конфигураторе, а для внедрения готовых решений в рабочую среду всегда следует использовать механизм Дополнительных отчетов и обработок БСП с предварительной настройкой разрешений.