Открыть программно внешнюю обработку

1. sustav86 27.02.13 15:16 Сейчас в теме
Добрый день!
Внешняя обработка зарегистрирована в справочнике внешних обработках.
Из формы друго-го справочника при нажатии хочу открыть свою Внешнюю обработку, открывается форма регистрации а не форма моей обработки. Подскажите пожалуйста, что не так. Толстый клиент, обычние формы.


Процедура ОсновныеДействияФормыФормыСпецификаций(Кнопка)
ВнешняяФорма = Справочники.ВнешниеОбработки.НайтиПоКоду("000000109");
Форма = ВнешняяФорма.ПолучитьФорму();
Форма.Открыть();
КонецПроцедуры
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. БольшойЧайник 34 27.02.13 15:18 Сейчас в теме
самое простое это посмотреть код который открывет внешнюю обработку из списка внешних обработок. скопировать его и вставить себе в форму.
3. Программист 1С 155 27.02.13 15:35 Сейчас в теме
4. sustav86 27.02.13 16:04 Сейчас в теме
Спасибо я разобрался. По анологии с типовым функционалом.

ВнешняяФорма = Справочники.ВнешниеОбработки.НайтиПоНаименованию("Имя обработки");
	
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
	
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
Форма.Открыть();
Saipl; kotlovD; denis83; akR00b; Sega; simuljakr; user822247; user1619761; maximus_2712; user820492; ValeriyZ; -Vosmiruk-; acuta; user1194102; shyne; 1C-Nic; Henistaromin; ital; user1113173; user721122; user_pdd; d.snissarenko; galamus; EugeneMIPT; adhocprog; sad123; Sibcar; 1v7; komatoza; Kesak; KroVladS; mailrum2004; tata111; harmless; freeek; VitusBering; rayastar; MrFlanker; Chaotic; iiiaiiika; Катя84; M.Shalimov; oleglega; User>lia; dicwork; Ethan Gold; stepancherkov; odin777; admin; Shilov; Отованец; free11; timberwolf2010; +53 Ответить
5. sergb1979 31.10.14 18:00 Сейчас в теме
6. stas4tor 21.11.14 10:04 Сейчас в теме
(4) sustav86, спасибо огромное.
Именно это я долго искал.
8. oleglega 16.02.15 11:10 Сейчас в теме
(4) sustav86, Спасибо большущее!
9. MrFlanker 223 19.06.15 09:19 Сейчас в теме
15. ValeriyZ 19 26.02.21 07:56 Сейчас в теме
(4)
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);


Спасибо! Все взлетело. Добавлю. Если необходимо открыть не обработку, а отчет, то строчка должна будет выглядеть так:
Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла);
26. 127.0.0.0 21.11.23 22:46 Сейчас в теме
(4)

ПутьКВременномуФайлу = ПолучитьИмяВременногоФайла();

...
+

Попытка
УдалитьФайлы(ПутьКВременномуФайлу);
Исключение
КонецПопытки;

если не удалять то место на диске рано или поздно закончиться ...
7. jobkostya1c_ERP 100 22.11.14 08:55 Сейчас в теме
Использовал подобное решение для нетиповой конфигурации тут аналогично как у Вас, но с контролем ошибок периода исполнения, т.к. вожможны ситуации:
1. внешней обработки просто нет, изменили название:
2. нет прав на создание временного файла обработки в каталоге
ПолучитьИмяВременногоФайла()
или просто на доступ к каталогу с использованием
попытка ... исключение
10. ДимокШ 7 29.09.16 19:09 Сейчас в теме
Для управляемых форм вот так можно открыть форму внешней обработки:

&НаКлиенте
Процедура Команда1(Команда)
	ИмяОбр = ПолучитьИмяВнешней("C:\мояОбработка.epf");
	
	ПараметрыОткрытия = Новый Структура("КлючВарианта", "");
	Уникальность = "ВнешняяОбработка." + ИмяОбр + "/КлючВарианта.";
	ОткрытьФорму("ВнешняяОбработка." + ИмяОбр + ".Форма", , Неопределено, Уникальность);
КонецПроцедуры

Функция ПолучитьИмяВнешней(ИмяФайла)
	дд = Новый ДвоичныеДанные(ИмяФайла);
	АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(дд);
	ИмяОбр = ВнешниеОбработки.Подключить(АдресВоВременномХранилище,,);
	
	Возврат ИмяОбр;
КонецФункции

Показать
user1638771; wolder; Acort; user1619761; redtram; Serg O.; Casey1984; Team leader; BISMI; +9 Ответить
12. Team leader 12 07.02.19 12:24 Сейчас в теме
11. 1v7 235 19.04.17 16:42 Сейчас в теме
АдресФайла="C:\Users\User\Desktop\СтартАвтоЗаписи.epf";
		ВнешняяОбработка = ВнешниеОбработки.Создать(АдресХранилища);
		НашаОбработка=ВнешняяОбработка.ПолучитьФорму();
		НашаОбработка.Открыть();
wolder; user712426; dimon2008; FilatovRA; copperfox; +5 Ответить
14. signum2009 1029 23.06.20 09:02 Сейчас в теме
Вот здесь для новых версий платформы, начиная с 8.3.15
https://www.1s-up.ru/programmnoe-otkrytie-obrabotok-v-1s
John_d; user1628996; triviumfan; +3 Ответить
16. John_d 5414 27.08.21 10:51 Сейчас в теме
&НаКлиенте
Процедура ДиадокДопФункции(Команда)
    ОткрытьФорму("ВнешняяОбработка.ДиадокДопФункции4.Форма.ОсновнаяФорма",,,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

КонецПроцедуры
17. Obertone 74 31.03.22 12:10 Сейчас в теме
Рискую предположить, что постановки задачи открытия внешней обработки или отчёта из справочника на управляемых формах не было в открытом виде. После поисков написал решение такой задачи.


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

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

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

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

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)
    Возврат ВнешниеОбработки.Подключить(АдресХранилища); 
КонецФункции 

&НаСервере
Функция ПолучитьКлючВариантаОтчета()
    
    СписокВариантов = ХранилищеВариантовОтчетов.ПолучитьСписок("ВнешнийОтчет.Отчет");
    Если СписокВариантов.Количество() = 0 Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    Возврат СписокВариантов[0].Значение;
    
КонецФункции


&НаСервере
Функция СсылкаНаОбработку(ЗаголовокОтчета)
    ОтчетСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ЗаголовокОтчета);
    Если ОтчетСсылка.Пустая() Тогда
        Сообщить("Не удалось найти внешний отчет");
        Возврат Ложь;
    КонецЕсли;
    
    ДвоичныеДанные = ОтчетСсылка.ХранилищеОбработки.Получить();
    АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
    ВнешниеОтчеты.Подключить(АдресХранилища, "Отчет");
    
    Возврат Истина;
КонецФункции
Показать
Xytras; Altone1976; +2 Ответить
18. SlavaKron 31.03.22 12:32 Сейчас в теме
(17) Для подключения внешнего отчета или обработки есть метод из БСП:
ДополнительныеОтчетыИОбработки.ПодключитьВнешнююОбработку(Ссылка)
Также, некорректно искать ссылку по наименованию, правильнее по реквизиту "ИмяОбъекта".
19. Obertone 74 31.03.22 12:37 Сейчас в теме
(18) Понятно. Спасибо за подсказку.
20. Obertone 74 12.04.22 07:18 Сейчас в теме
(18) Как оказалось, о методе из БСП по открытию внешней обработки или отчёта из справочника на управляемых формах сведения в открытом виде нашлись: https://infostart.ru/1c/articles/1027823/
21. user1739720 29.04.22 10:36 Сейчас в теме
Добрый день. Тоже пытаюсь открыть программно форму документа из расширения.
Вот код:
&После("ПриНачалеРаботыСистемы")
&НаКлиенте
Процедура Команда()
	СсылкаНаДокумент =  ЗаполнитьДанные();
	Текдок = СсылкаНаДокумент.СсылкаДокумент;
	Панель=ПолучитьФорму("Документ.НачалоМесяца.Форма.ФормаСписка",Текдок);
	Панель.Открыть();
	 
КонецПроцедуры 


 &НаСервере
Функция ЗаполнитьДанные() 	
	ДатаЗаполнения = ТекущаяДата();
	ЗапросНачаломесяца = Новый Запрос;
	ЗапросНачаломесяца.УстановитьПараметр("ДатаНачалаМесяца",НачалоМесяца(ДатаЗаполнения));
	ЗапросНачаломесяца.текст =  "ВЫБРАТЬ
	                            |	НачалоМесяца.Ссылка КАК Ссылка
	                            |ИЗ
	                            |	Документ.НачалоМесяца КАК НачалоМесяца
	                            |ГДЕ
	                            |	НачалоМесяца.Дата = &ДатаНачалаМесяца";
	
	РезультатЗапроса = ЗапросНачаломесяца.Выполнить();
	СсылкаДокумент = РезультатЗапроса.Выгрузить()[0].Ссылка;
	
	 СтруктураДок = Новый Структура;
	 СтруктураДок.Вставить("ДатаДок",СсылкаДокумент.Дата);
	 СтруктураДок.Вставить("СсылкаДок",СсылкаДокумент);
	 //СтруктураДок.Вставить("ОбъектДок",СсылкаДокумент.ПолучитьОбъект());

	 возврат СтруктураДок;
Показать

КонецФункции

При выполнении &Наклиенте процедуру &Насервере не видит.
Почему???? (тонкий клиент)
22. vikb11 17.06.22 13:21 Сейчас в теме
(21) А точно ли не видит функцию на сервере?! Я тут другую ошибку вижу - в структуре ключ "СсылкаДок", а в переменную выбирается элемент с ключом "СсылкаДокумент".
23. SlavaKron 17.06.22 14:55 Сейчас в теме
(21)
ПриНачалеРаботыСистемы
Судя по всему, это модуль приложения. он только на клиенте.
24. user1922943 16.03.23 13:06 Сейчас в теме
Использовать типовой механизм

&НаСервере
Функция ПолучитьКоманду()
	
	ВнешняяФорма = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Название обработки"); 
	МассивОбъектов = Новый Массив();
	МассивОбъектов.Добавить(Неопределено);
	СтуктураОбработки = Новый Структура;
	СтуктураОбработки.Вставить("ВариантЗапуска",Перечисления.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы);
	СтуктураОбработки.Вставить("ВариантЗапуска",Перечисления.ВидыДополнительныхОтчетовИОбработок.ЗаполнениеОбъекта);
	СтуктураОбработки.Вставить("Идентификатор","1"); 
	СтуктураОбработки.Вставить("Модификатор",""); 
	СтуктураОбработки.Вставить("ОбъектНазначение",МассивОбъектов);
	СтуктураОбработки.Вставить("ПоказыватьОповещения",Истина);
	СтуктураОбработки.Вставить("Представление","Название обработки");
	СтуктураОбработки.Вставить("Ссылка",ВнешняяФорма);   
	СтуктураОбработки.Вставить("ЭтоОтчет",Ложь);   
	
	Возврат СтуктураОбработки;
КонецФункции
&НаКлиенте
Процедура ВнестиДанные(Команда)   
	Команда = ПолучитьКоманду();    
	ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(Команда,Неопределено,Неопределено);
 КонецПроцедуры
Показать
25. Altez50 1 15.05.23 11:15 Сейчас в теме
Открытие формы из epf/erf в толстом клиенте:

ИмяФайла="D:\имяфайланаклиенте.epf";
Об = ВнешниеОбработки.Создать(ИмяФайла, Ложь, Новый ОписаниеЗащитыОтОпасныхДействий); 

ИмяОбработки = "ИмяИзМетаданных";
ОткрытьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");


Для отладки вместо Файл/открыть.
Оставьте свое сообщение

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