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

1. Vitaly1C8 25.09.20 15:53 Сейчас в теме
Добрый день !
Подскажите как все-таки открыть Форму доп-обработки из
Спр.ДополнительныеОтчетыИОбработки на управляемых формах ?
В инете нашел кучу примеров - ни один не заработал на управляемых формах :(
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VictorRGB2 13 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 Ответить
Оставьте свое сообщение

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