Вызов внешней печатной формы программно

1. forever-lilya 5 27.11.13 12:06 Сейчас в теме
Необходимо вызвать программно внешнюю печатную форму. Есть справочник "Внешние обработки", где хранятся внешние печатные формы и обработки, как вызвать функцию во внешней печатной форме?

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

Конечно же такая конструкция не работает...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AndreySV 2 27.11.13 12:12 Сейчас в теме
Вот рабочий пример открытия внешнего отчета:

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

	Форма.Открыть(); 
	УдалитьФайлы(ИмяФайла);
Показать
4. forever-lilya 5 27.11.13 12:40 Сейчас в теме
(2) AndreySV,

Форма.Открыть();


Открывается форма внешней обработки. Это не нужно.

Необходимо вызвать функцию, которая описана во внешней печатной форме.
3. forever-lilya 5 27.11.13 12:29 Сейчас в теме
Форма.Открыть();


Открывается форма внешней обработки. Это не нужно.
5. AlexInqMetal 77 27.11.13 12:43 Сейчас в теме
напрямую никак, можно передать параметр в открываемую форму, а во внешней обработке при открытии проверять параметр и вызывать функцию. кстати, очень странно вы пытаетесь печатную форму открыть, печатная форма как правило привязана к объекту, и без него не имеет смысла, так что процедура Печать() врядли чего хорошего вернет, кроме ошибки.
6. forever-lilya 5 27.11.13 12:49 Сейчас в теме
(5) AlexInqMetal,
Передать в Ссылку на объект конечно же.
Хорошая мысль передавать параметр в форму. Спасибо. Попробую.
9. forever-lilya 5 27.11.13 13:13 Сейчас в теме
Если Контрагент=Справочники.Контрагенты.НайтиПоКоду("8627") Тогда
ТекСсылка = Справочники.ВнешниеОбработки.НайтиПоКоду("000000058");
Если Обр = Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда
Сообщить("Внешняя печатная форма не найдена");
Иначе
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ТекСсылка.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);

Объект = ТекСсылка.ПолучитьОбъект();
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
Форма.ОбработкаОбъект.ЭтотОбъект.СсылкаНаОбъект=ЭтотОбъект.Ссылка;
Форма.Открыть();
Форма.Закрыть();
УдалитьФайлы(ИмяФайла);

КонецЕсли;


Все получилось! Спасибо!(5) AlexInqMetal,
7. AndreySV 2 27.11.13 12:57 Сейчас в теме
попробуйте так

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

    Объект = ТекСсылка.ПолучитьОбъект();
    ЗначениеФункции = Объект.ИмяВашейФункции; // если она экспортная 
Показать
8. forever-lilya 5 27.11.13 13:02 Сейчас в теме
(7) AndreySV, Неа, нельзя обращаться к функциям во внешней печатной форме... Экспортная функция.
Оставьте свое сообщение

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