Как открыть форму Доп обработки (из Спр.ДополнительныеОтчетыИОбработки) на УФ

1. Vitaly1C8 25.09.20 15:53 Сейчас в теме
Добрый день !
Подскажите как все-таки открыть Форму доп-обработки из
Спр.ДополнительныеОтчетыИОбработки на управляемых формах ?
В инете нашел кучу примеров - ни один не заработал на управляемых формах :(
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VictorRGB2 14 25.09.20 16:16 Сейчас в теме
я так делаю, вызывая доп. обработку из справочника заданий

если надо просто выполнить модуль из обработки
лОбработкаОбъект = ПолучитьОбъектОбработки();

Функция ПолучитьОбъектОбработки() Экспорт
    
    лОписаниеОшибки = "";
    лИмяОбработки = ПолучитьИмяОбработки(лОписаниеОшибки);
    
    Если лИмяОбработки = "" Тогда
        Возврат лОписаниеОшибки;
    КонецЕсли;
    
    лРезультат = "";
    Попытка
        лРезультат = ВнешниеОбработки.Создать(лИмяОбработки, Ложь);
    Исключение
        лРезультат = ОписаниеОшибки();
    КонецПопытки;
    
    Возврат лРезультат;
    
КонецФункции

Функция ПолучитьИмяОбработки(пОписаниеОшибки = "") Экспорт
    
    лРезультат = "";
    
    Если Не ЗначениеЗаполнено(ИмяСсылкаОбработки) Тогда
        пОписаниеОшибки = "Не выбрана обработка синхронизации!";
        Возврат лРезультат;
    КонецЕсли;
    
    Если ТипЗнч(ИмяСсылкаОбработки) = Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки") Тогда
        Попытка
            лАдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ИмяСсылкаОбработки.ХранилищеОбработки.Получить());
            лРезультат = ВнешниеОбработки.Подключить(лАдресВоВременномХранилище, , Ложь);
        Исключение
            пОписаниеОшибки = ОписаниеОшибки();
        КонецПопытки;
        
    ИначеЕсли ТипЗнч(ИмяСсылкаОбработки) = Тип("Строка") Тогда
        лФайл = Новый Файл(ИмяСсылкаОбработки);
        Если лФайл.Существует() Тогда
            лРезультат = ИмяСсылкаОбработки;
        Иначе
            пОписаниеОшибки = "Не найдена указанная внешняя обработка!";
        КонецЕсли;
        
    Иначе
        пОписаниеОшибки = "Неизвестный тип параметра ""ИмяСсылкаОбработки""!";
        
    КонецЕсли;
    
    Возврат лРезультат;
    
КонецФункции    //ПолучитьИмяОбработки()

Функция ПолучитьОбъектОбработки() Экспорт
    
    лОписаниеОшибки = "";
    лИмяОбработки = ПолучитьИмяОбработки(лОписаниеОшибки);
    
    Если лИмяОбработки = "" Тогда
        Возврат лОписаниеОшибки;
    КонецЕсли;
    
    лРезультат = "";
    Попытка
        лРезультат = ВнешниеОбработки.Создать(лИмяОбработки, Ложь);
    Исключение
        лРезультат = ОписаниеОшибки();
    КонецПопытки;
    
    Возврат лРезультат;
    
КонецФункции

Показать

дальше выполнение методов обработки без открытия формы

если же именно форму открыть то так

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

    лИмяФайлаОбработки = "";
    лЭтоОбработкаИзФайловойСистемы = ЭтоОбработкаИзФайловойСистемы(Объект, лИмяФайлаОбработки);

    Если лЭтоОбработкаИзФайловойСистемы Тогда
        Если Не лИмяФайлаОбработки = "" Тогда
            лФайл = Новый Файл(лИмяФайлаОбработки);
            Если лФайл.Существует() Тогда
                лАдресВоВременномХранилище = "";
                лОповещение = Новый ОписаниеОповещения("ОткрытьФормуОбработкиИзФайла", ЭтотОбъект);
                НачатьПомещениеФайла(лОповещение, лАдресВоВременномХранилище, лИмяФайлаОбработки, Ложь, Новый УникальныйИдентификатор);
            КонецЕсли;
        КонецЕсли;
        
    Иначе
        лОписаниеОшибки = "";
        лИмяОбработки = ПодключитьДополнительнуюОбработку_НаСервере(ПараметрКоманды, лОписаниеОшибки);
        
        Если лОписаниеОшибки = "" И Не лИмяОбработки = "" Тогда
            ОткрытьФорму("ВнешняяОбработка." + лИмяОбработки + ".Форма");
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ЭтоОбработкаИзФайловойСистемы(пСсылка, пИмяФайлаОбработки = "")
    
    лРезультат = Истина;
    
    Если ТипЗнч(пСсылка.ИмяСсылкаОбработки) = Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки") Тогда
        лРезультат = Ложь;
    Иначе
        пИмяФайлаОбработки = пСсылка.ИмяСсылкаОбработки;
    КонецЕсли;
    
    Возврат лРезультат;
    
КонецФункции

&НаСервере
Функция ПодключитьДополнительнуюОбработку_НаСервере(пСсылка, пОписаниеОшибки = "")
    
    лОбъект = пСсылка.ПолучитьОбъект();
    
    лИмяОбработки = лОбъект.ПолучитьИмяОбработки(пОписаниеОшибки);
    
    Возврат лИмяОбработки;
    
КонецФункции

Показать
Vitaly1C8; +1 Ответить
3. SlavaKron 25.09.20 16:17 Сейчас в теме
&НаКлиенте
Процедура ОткрытьОсновнуюФормуОбработки(Команда)
    
    ИмяВнешнейОбработки = ПодключитьВнешнююОбработку(СсылкаНаОбработку);
    
    ОткрытьФорму("ВнешняяОбработка." + ИмяВнешнейОбработки + ".Форма");
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПодключитьВнешнююОбработку(Ссылка)
    
    Возврат ДополнительныеОтчетыИОбработки.ПодключитьВнешнююОбработку(Ссылка);
    
КонецФункции
Показать
Vitaly1C8; +1 Ответить
4. andy_zhav 197 25.09.20 16:18 Сейчас в теме
(1) Все просто. пару строчек кода. Дополнительная обработка - ссылка на соответствующий элемент справочника

    ИДОбработки = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ДополнительнаяОбработка);
    ОткрытьФорму("ВнешняяОбработка." + ИДОбработки + ".Форма", ,ЭтаФорма);

Vitaly1C8; alex-l19041; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот