При работе с внешними обработками в среде 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда код, успешно работающий под полными правами, выдает ошибку «Установлен безопасный режим. Выполнение операции запрещено» у обычного пользователя — для локализации причин таких ошибок пригодится инструмент отладки кода в режиме «Предприятие». Особенно часто это происходит при попытке установить HTTP-соединение, работе с файловой системой или использовании COM-объектов. Проблема усугубляется тем, что даже снятие флажка «Защита от опасных действий» в карточке пользователя не помогает. Рассмотрим подробно, почему это происходит и как правильно решить задачу различными способами.
Для начала проанализируем механизмы защиты платформы (в этом поможет анализ прав и профилей доступа в 1С). Важно различать два разных понятия, которые часто путают:
conf.cfg, это лишь уберет предупреждение, но не снимет программные ограничения.Когда пользователь без полных прав открывает внешнюю обработку через меню Файл — Открыть, платформа 1С автоматически включает для этой обработки безопасный режим. Это происходит потому, что код во внешнем файле считается «недоверенным». С точки зрения безопасности, это защищает сервер от выполнения вредоносного кода, который пользователь мог скачать из интернета.
Проанализируем самый правильный и «цивилизованный» метод. Вместо того чтобы заставлять пользователя открывать файл через меню «Файл», необходимо зарегистрировать обработку в справочнике ДополнительныеОтчетыИОбработки (если ваша конфигурация построена на БСП). При наличии БСП посмотреть зарегистрированные внешние обработки и установленный для них режим безопасности можно через обследование расширений и дополнительных обработок. Это только просмотр настроек, а не отключение защиты; работа инструмента на 8.3 не подтверждена.
Разберем по шагам, почему это работает:
Если специфика задачи требует запуска именно через «Файл — Открыть», рассмотрим возможность изменения кода — в этом поможет удобная консоль кода и отладки объектов. Ошибка часто возникает, когда вызов HTTP-соединения происходит в общем модуле, который не является привилегированным. Однако даже в привилегированном модуле вызов может быть заблокирован, если цепочка вызовов началась из «безопасного» контекста внешней обработки.
Посмотрим на пример кода, который помогает временно повысить привилегии для выполнения конкретной операции:
// В модуле внешней обработки
&НаСервере
Процедура ВыполнитьПодключениеНаСервере()
// Пытаемся отключить безопасный режим для текущего контекста
// Внимание: это сработает только если у пользователя есть права на администрирование
УстановитьБезопасныйРежим(Ложь);
// Вызываем метод привилегированного модуля
МойПривилегированныйМодуль.ВыполнитьЗапросКСерверу();
КонецПроцедуры
Однако помните: если у пользователя нет права ИнтерактивноеОткрытиеВнешнихОбработок или он не является администратором, прямой вызов УстановитьБезопасныйРежим(Ложь) может быть проигнорирован платформой. В этом случае единственным выходом будет вынос логики в общий модуль с установленной галочкой Привилегированный — для корректной настройки прав пригодится утилита формирования профилей доступа и ролей.
Разберем более глубокий уровень настройки платформы. Мало кто знает о возможности точечной настройки исключений через файл SafeMode.cfg. Этот файл создается в каталоге conf сервера 1С (или локального компьютера, если используется файловый вариант).
С помощью этого файла можно разрешить конкретные действия (например, доступ к определенным URL) даже в безопасном режиме. Это позволяет сохранить общую безопасность системы, разрешив только необходимые операции. Структура файла выглядит примерно так:
<config xmlns="http://v8.1c.ru/8.2/config/safemode">
<allow>
<url host="api.yourserver.com" protocol="http" />
<url host="api.yourserver.com" protocol="https" />
</allow>
</config>
Этот метод требует прав доступа к файловой системе сервера и понимания структуры XML-конфигураций 1С.
Проанализируем ситуацию для крупных предприятий. Если ваша организация использует лицензии уровня КОРП, вы можете использовать механизм Профилей безопасности — для детальной настройки пригодится инструмент анализа прав доступа и RLS.
В консоли администрирования кластера серверов создается профиль, в котором четко прописываются разрешенные ресурсы (вкладка «Internet ресурсы»). Затем этот профиль назначается конкретной информационной базе. Это самый мощный и гибкий инструмент, но он недоступен на обычных (ПРОФ) лицензиях.
Рассмотрим нестандартный подход, предложенный сообществом. Существуют специальные «обработки-обертки». Суть метода заключается в создании небольшой внешней обработки, которая программно открывает вашу основную обработку, но делает это через методы БСП или с предварительной установкой нужных параметров сеанса. Это позволяет обмануть ограничение интерактивного открытия, имитируя запуск доверенного кода.
Подводя итог, можно сделать следующие выводы:
conf.cfg с параметром DisableUnsafeActionProtection=.*, но помните, что это лишь убирает вопросы системы, а не снимает ограничения на HTTP-соединения в безопасном режиме.Мы рекомендуем всегда придерживаться использования справочника ДополнительныеОтчетыИОбработки, так как это гарантирует стабильную работу кода и сохраняет высокий уровень безопасности вашей информационной системы.