Имя: Пароль:
1C
1С v8
Перезапуск внешней обработки/отчета УФ
0 Crush
 
10.06.19
15:23
Не прошло и 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") Тогда
                рез    = Команды.РезетУФ.Подсказка;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    Возврат рез;
КонецФункции

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    РезетУФНаСервере();
КонецПроцедуры