После очередных обновлений платформы и конфигурации система отказалась принимать внешнюю обработку в раздел "Дополнительные отчеты и обработки". При попытке подключения требуемой внешней обработки менеджер ВнешнихОбработок сообщает "Невозможно подключить дополнительную обработку из файла.
Возможно, она не подходит для этой версии программы.Установлен безопасный режим. Выполнение операции запрещено". А работать с внешней обработкой через меню "Файл" - "Открыть" теперь позволяется только пользователям с административными правами. Режим работы платформы 8.3 файловый, поэтому профили безопасности использовать нельзя. Пришлось выкручиваться и написать обёртку, которая регистрируется в разделе "Дополнительные отчеты и обработки" и вызывает требуемую внешнюю отвергнутую обработку:
&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)
Возврат ВнешниеОбработки.Подключить(АдресХранилища, , Ложь);
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Помещаем обработку во временном хранилище
АдресХранилища = "";
Результат = ПоместитьФайл(АдресХранилища, "C:\Нужная Обработка.epf", , Ложь);
ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
// Откроем форму подключенной внешней обработки
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма");
ЭтаФорма.Закрыть();
КонецПроцедуры
При желании можно установить привилегированный режим исполнения, но это лучше делать в подключаемой основной обработке.
- изменить в модуле формы путь к вашей обработке (в примере "C:\Нужная Обработка.epf");
- изменить в модуле объекта вид обработки в соответствии с назначением основной обработки ("ДополнительнаяОбработка", "ДополнительныйОтчет", etc);
- зарегистрировать обёртку в дополнительных отчетах и обработках (см. прилагаемый снимок экрана).
Для порядка и ясности использования можно отредактировать модуль объекта обработки-обёртки, заменив имена соответствующими вашей обработки:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
// Вид должен соответствовать вашей обработки
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
// Наименование также имеет смысл скорректировать в соответствии с назначением вашей обработки
ПараметрыРегистрации.Наименование = "Обёртка для запуска внешней обработки";
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь; // На ваше усмотрение
ПараметрыРегистрации.Информация = "Для обхода безопасного режима";
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = ПараметрыРегистрации.Наименование;
НоваяКоманда.Идентификатор = "ОбёрткаДляЗапускаВнешнейОбработки";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
НоваяКоманда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции // СведенияОВнешнейОбработке()