Не прошло и 5-и лет. А нет, прошло:) Как снова захотелось перезапускать внешнюю обработку по кнопочке Ф5.
Ранее попытка была тут
v8: Как на сервере получить объект созданной внешней обработки по уникальному ид
Написал себе. Мож кому еще пригодится. На отчетах не тестил, в промышленной эксплуатации тоже еще не опробовал. Так что не пинайте.
В модуль управляемой формы добавляем следующий текст и в режиме предприятия жмакаем Ф5 для перезапуска.
&НаКлиенте
Процедура РезетУФ(п1=Неопределено,п2=Неопределено,п3=Неопределено,п4=Неопределено) Экспорт
тзп1 = ТипЗнч(п1);
Если тзп1 = Тип("Булево") Тогда //Разместился файл
ПолучитьФорму(?(СтрЗаканчиваетсяНа(п3,".epf"),"ВнешняяОбработка","ВнешнийОтчет")+"."+РезетУФНаСервере(п2,п3)+".Форма",Новый Структура("ИспользуемоеИмяФайла",п3),,Истина).Открыть();
Закрыть();
ИначеЕсли тзп1 = Тип("КомандаФормы") Тогда
НачатьПомещениеФайла(Новый ОписаниеОповещения("РезетУФ",ЭтаФорма),,РезетУФНаСервере(""),Ложь);
КонецЕсли;
КонецПроцедуры
Функция РезетУФНаСервере(п1=Неопределено,п2=Неопределено)
рез = Неопределено;
Если п1=Неопределено и п2=Неопределено Тогда //Добавим кнопку
ЗаполнитьЗначенияСвойств(ЭтаФорма.Команды.Добавить("РезетУФ"),Новый Структура("Действие,Подсказка","РезетУФ",РезетУФНаСервере("")));
ЗаполнитьЗначенияСвойств(ЭтаФорма.Элементы.Добавить("кнРезетУФ",Тип("КнопкаФормы"),ЭтаФорма.КоманднаяПанель),Новый Структура("ТолькоВоВсехДействиях,СочетаниеКлавиш,ИмяКоманды",Истина,Новый СочетаниеКлавиш(Клавиша.F5),"РезетУФ"));
ИначеЕсли п1<>Неопределено и п2<>Неопределено Тогда //Подключим обработку или отчет
Файл = Новый Файл(п2);
ЗащитаОтОпасныхДействий = Новый ОписаниеЗащитыОтОпасныхДействий;
ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях = Ложь;
рез = ?(СтрЗаканчиваетсяНа(п2,".epf"),ВнешниеОбработки,ВнешниеОтчеты).Подключить(п1,Файл.ИмяБезРасширения,Ложь,ЗащитаОтОпасныхДействий);
ИначеЕсли п1<>Неопределено и п2=Неопределено Тогда //Определим имя файла
Если Не ЭтаФорма.Параметры.Свойство("ИспользуемоеИмяФайла",рез) Тогда
рез = НРег(РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла);
Если СтрНачинаетсяС(рез,"e1cib") Тогда
рез = Команды.РезетУФ.Подсказка;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат рез;
КонецФункции
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
РезетУФНаСервере();
КонецПроцедуры