Обход ситуации "Установлен безопасный режим. Выполнение операции запрещено"


При подключении внешних обработок нередко возникают ситуации, когда платформа сообщает «Обработка не подключена», подробности сообщения не вносят ясности — «Невозможно подключить дополнительную обработку из файла. Возможно, она не подходит для этой версии программы.
Установлен безопасный режим. Выполнение операции запрещено». Для таких случаев и была написана обработка-обёртка, позволяющая подключать требуемую обработку.

После очередных обновлений платформы и конфигурации система отказалась принимать внешнюю обработку в раздел «Дополнительные отчеты и обработки». При попытке подключения требуемой внешней обработки менеджер ВнешнихОбработок сообщает «Невозможно подключить дополнительную обработку из файла.
Возможно, она не подходит для этой версии программы.Установлен безопасный режим. Выполнение операции запрещено
«. А работать с внешней обработкой через меню «Файл» — «Открыть» теперь позволяется только пользователям с административными правами. Режим работы платформы 8.3 файловый, поэтому профили безопасности использовать нельзя. Пришлось выкручиваться и написать обёртку, которая регистрируется в разделе «Дополнительные отчеты и обработки» и вызывает требуемую внешнюю отвергнутую обработку:

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)

Возврат ВнешниеОбработки.Подключить(АдресХранилища, , Ложь);

КонецФункции

&НаКлиенте
Процедура ПриОткрытии(Отказ)

// Помещаем обработку во временном хранилище
АдресХранилища = "";
Результат = ПоместитьФайл(АдресХранилища, "C:Нужная Обработка.epf", , Ложь);
ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);

// Откроем форму подключенной внешней обработки
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма");
ЭтаФорма.Закрыть();

КонецПроцедуры

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

Для использования обработки-обёртки требуется произвести следующие действия:
  • изменить в модуле формы путь к вашей обработке (в примере «C:Нужная Обработка.epf»);
  • изменить в модуле объекта вид обработки в соответствии с назначением основной обработки («ДополнительнаяОбработка», «ДополнительныйОтчет», etc);
  • зарегистрировать обёртку в дополнительных отчетах и обработках (см. прилагаемый снимок экрана).

Для порядка и ясности использования можно отредактировать модуль объекта обработки-обёртки, заменив имена соответствующими вашей обработки:

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());

// Вид должен соответствовать вашей обработки
ПараметрыРегистрации.Вид    = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
// Наименование также имеет смысл скорректировать в соответствии с назначением вашей обработки
ПараметрыРегистрации.Наименование  = "Обёртка для запуска внешней обработки";
ПараметрыРегистрации.Версия    = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь; // На ваше усмотрение
ПараметрыРегистрации.Информация   = "Для обхода безопасного режима";

НоваяКоманда    = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = ПараметрыРегистрации.Наименование;
НоваяКоманда.Идентификатор = "ОбёрткаДляЗапускаВнешнейОбработки";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
НоваяКоманда.ПоказыватьОповещение = Истина;

Возврат ПараметрыРегистрации;

КонецФункции // СведенияОВнешнейОбработке()

4 Comments

  1. twiny

    Начинает ругаться на модальное открытие по строке:

    ПоместитьФайл(АдресХранилища, «C:Нужная Обработка.epf», , Ложь)

    Похоже еще нужно добавить разрешение на работу с временной папкой в СведенияОбработки.

    п.с.

    переделал, для обхода разрешения HTTP. Вроде работает!

    Вы не против, если отдельной статьей выложу пример моего обхода?

    Reply
  2. Now

    Ни капли, может кому-то поможет ))

    Reply
  3. ybatiaev

    Прошёл год, а я только столкнулся с данной проблемой. Но вылазит ошибка

    {Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма(1023)}: Не удалось выполнить команду по причине:

    Метод объекта не обнаружен (ВыполнитьКоманду).

    ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

    Вообще как должно работать. У меня есть некая административная часть. С формой настроек. Она доступна пользователям. Они настраивают и сохраняют настройки.

    А вот другая обработка с

    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();

    Запускается раз в день, запускает экспортные функции с модуля объекта, в том числе получает и параметры для чтения настроек.

    Именно ЭТА обработка и с такой ошибкой. Ваша обработка пока не помогла. Если можете — поясните почему такая ошибка с командой, при запуске с ДОПОЛНИТЕЛЬНЫХ ОБРАБОТОК. Если «файл открыть» то всё ок. Но и моя тоже так работает.

    Reply
  4. Now

    Ошибка «Не удалось выполнить команду по причине: Метод объекта не обнаружен (ВыполнитьКоманду)» может быть связана с тем, что процедура ВыполнитьКоманду не экспортная. По вашему сообщению больше ничего не приходит в голову — мало информации

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *