Как программно распечатать внешнюю печатную форму?

1. Evstari 28.04.12 09:26 Сейчас в теме
Как программно распечатать внешнюю печатную форму, имея только ссылку на документ и название макета?

с программной распечаткой встроенных форм все просто. А вот с внешними не особо понятно.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. fomaOp 28.04.12 11:24 Сейчас в теме
(1) Evstari,
В типовых конфигурациях, в частности в "Бухгалтерия предприятия 2.0", в общем модуле "Универсальные механизмы" есть функция "НапечататьВнешнююФорму". Посмотрите, возможно это то, что вам нужно.
3. Evstari 28.04.12 11:36 Сейчас в теме
есть,смотрела. уне два параметра на входе,ссылка это понятно, но источник макета... с этим параметром не все мне понятно(( какого он типа,откуда брать...
4. fomaOp 28.04.12 12:08 Сейчас в теме
(3) Evstari,

ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(СсылкаНаДокумент,Неопределено);

СтрокаКнопки = ДеревоМакетовПечати.Строки.Найти("ИМЯ-ВАШЕГО-МАКЕТА","Текст");

Расшифровка = СтрокаКнопки.Расшифровка;
Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
ТабДокументСФ = УниверсальныеМеханизмы.НапечататьВнешнююФорму(СсылкаНаДокумент, Расшифровка);
КонецЕсли;
shalupov61; neo-ti; KamranV21; stepani4; qazaz2; Liss111; ulen; user706520_bichkov; Enziger; Мах; evn-zorin; michael03; myoker; alexhline; Михаська; Efimoff; frob_st; demon_infernal; Stradivari; mikele_bes; Shok05; Поручик; +22 Ответить
6. Shok05 09.04.13 16:46 Сейчас в теме
(4) fomaOp, Большое спасибо!!!
14. hromovanton 7 06.06.17 11:39 Сейчас в теме
(4) Спасибо огромное. Очень пригодилось!
7. mikele_bes 8 10.11.14 14:20 Сейчас в теме
(4) fomaOp спасибо, выручили
10. jsunny 3 01.04.15 19:29 Сейчас в теме
(4) fomaOp, Спасибо ОГРОМНОЕ. "То что доктор прописал"
12. platon_ 10 24.09.15 16:28 Сейчас в теме
(4) спасибо. очень помогло
16. Pirat-37 5 18.03.21 11:39 Сейчас в теме
(4)
ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(СсылкаНаДокумент,Неопределено);

СтрокаКнопки = ДеревоМакетовПечати.Строки.Найти("ИМЯ-ВАШЕГО-МАКЕТА","Текст");

Расшифровка = СтрокаКнопки.Расшифровка;
Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
ТабДокументСФ = УниверсальныеМеханизмы.НапечататьВнешнююФорму(СсылкаНаДокумент, Расшифровка);
КонецЕсли;


Красавчик!!! Очень помог.
5. Evstari 28.04.12 12:51 Сейчас в теме
8. jobkostya1c_ERP 100 14.11.14 21:38 Сейчас в теме
Возможно, вот пригодится процедура печати внешней печатной формы с отладкой из справочника "внешние обработки". Оказалась почти универсальной для разработки новых печатных форм и отладки имеющихся. Тут, правда, используется передача типа ДокументОбъект в ВПФ из-за особенностей реализации конфигурации ВДГБ Ломбард 3.3
// Описание доработки: Вызывает данные функции из справочника ВПФ по строгому соответствию имени и передает им объект.
Процедура ПечатьИзВПФ(ИмяВПФ);
	СсылкаНаВПФ = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ИмяВПФ);
	Если СсылкаНаВПФ.Пустая() Тогда
		Сообщить("В справочнике 'Внешние обработки' не нашли внешнюю печатную форму с наименованием '"+ИмяВПФ+"'");
		Возврат;
	КонецЕсли;
		
	Попытка
		ИмяВременногоФайла = КаталогВременныхФайлов()+"тмп_впф.epf";
	Исключение
		Сообщить ("Невозможно создать файл обработке в каталоге временных файлов <<"+
		+КаталогВременныхФайлов()+">>. Возможно, не хватает прав доступа в Windows в папку для данного сеанса 1С ");
		Возврат;
	КонецПопытки;	
	
	ДвоичныеДанные = СсылкаНаВПФ.ХранилищеВнешнейОбработки.Получить();		
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	
	Попытка
		ОбрОбъект = ВнешниеОбработки.Создать(ИмяВременногоФайла);
		ОбрОбъект.ДокОбъект = ЭтотОбъект; // НЕ исп. метод скопировать. Передать ТАК - особенности ВДГБ;
	Исключение
		Сообщить("Ошибка создания объекта из временного файла обработки "+ИмяВременногоФайла);
		Возврат;
	КонецПопытки;
	
	// Проба печати
	Попытка
		ТаблДок = ОбрОбъект.Печать();
		ТаблДок.Вывести();
	Исключение
		А=1; // Точка останова для отладки!
		Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке() )); // ВНЕШНЮЮ печатную форму из справончика ВПФ можно спокойно поправить!
	КонецПопытки;	
			
КонецПроцедуры	
//###Дор- 

Показать

Происходит программный поиск по наименованию внешней обработки - печатной формы в справочнике внешних обработок, создание обработки-объекта во временном каталоге Windows и передача ей параметров документ-объета из которого был вызов.
Aggressorak; user1699266; savauu; unknown181538; IvanGorbunov; Mi4man; +6 Ответить
9. jobkostya1c_ERP 100 16.11.14 17:05 Сейчас в теме
Ошибся малость вот этот фрагмент по записи прочитанного в двоичном коде
ДвоичныеДанные = СсылкаНаВПФ.ХранилищеВнешнейОбработки.Получить();        
    ДвоичныеДанные.Записать(ИмяВременногоФайла);
нужно в
Попытка Исключение
11. kiv1c 818 23.09.15 12:42 Сейчас в теме
для зуп 3.0 это можно сделать так:
ДоговорАвтПФ = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта","АвторскийДоговор");
КоллекцияПечатныхФорм=новый ТаблицаЗначений;
	ОбъектыПечати = Новый СписокЗначений;
	параметрывывода=неопределено;
//1 договор авт
				парам = новый структура;
				парам.Вставить("ИдентификаторКоманды","Макет");
				об = новый массив;
				об.Добавить(СтрокаПечати.Договор);
				парам.Вставить("ОбъектыНазначения",об);
				
				ДополнительныеОтчетыИОбработки.ПечатьПоВнешнемуИсточнику(ДоговорАвтпф,парам,КоллекцияПечатныхФорм,ОбъектыПечати,параметрывывода);
				
				для каждого стр из КоллекцияПечатныхФорм цикл
					табДок = стр.ТабличныйДокумент;
					структураПечати = новый структура;
					структураПечати.Вставить("ТабДок",ТабДок);
					структураПечати.Вставить("Заголовок",строка(СтрокаПечати.Сотрудник)+строка(СтрокаПечати.Договор));
					структураПечати.Вставить("Сотрудник",СтрокаПечати.Сотрудник);
					структураПечати.Вставить("Договор",СтрокаПечати.Договор);
					структураПечати.Вставить("Акт",СтрокаПечати.АктКДоговору);
					табдокиВозврата.Добавить(структураПечати);
				конеццикла;
Показать

а потом на клиенте печатать эти табдоки:
для каждого ТабДок из табДокиМассив цикл
		//массив
		коллекция = 		УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
		//структура  в массиве
		СтруктураКоллекции = коллекция.получить(0);
		СтруктураКоллекции.ТабличныйДокумент = табДок.ТабДок;
		
		УправлениеПечатьюКлиент.ПечатьДокументов(коллекция,,ЭтаФорма);
		//УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,						"Макет", "Макет",						ТабДок);
		
		//ТабДок.Показать();
	конеццикла;
Показать
Z_Z; Isonic; vx_gas; Drivingblind; Solovyev_anton; jobkostya1c_ERP; +6 Ответить
17. Z_Z 19.01.24 10:13 Сейчас в теме
(11) Спасибо, искал именно для УПР форм.
13. i21012009 28.02.17 14:03 Сейчас в теме
СПАСИБО, и я воспользовалась подсказкой :)
15. IvanGorbunov 14.02.20 20:30 Сейчас в теме
Свой вариант добавлю:

&НаСервереБезКонтекста
Процедура ПечатьИзВПФ(ИмяВПФ, СсылкаНаДокумент);
	
    СсылкаНаВПФ = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяВПФ);
	
    Если СсылкаНаВПФ.Пустая() Тогда
        Сообщить("В справочнике ""Дополнительные отчеты и обработки"" не найдена внешнюю печатную форму с наименованием '" + ИмяВПФ + "'");
        Возврат;
    КонецЕсли;
	
    Попытка
        ОбработкаОбъект = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(СсылкаНаВПФ);
    Исключение
        Сообщить("Не удалось напечатать """ + ИмяВПФ + "'"". Ошибка создания объекта дополнительной ПФ");
        Возврат;
    КонецПопытки;
    
    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(СсылкаНаДокумент);
    
    ОбъектыПечати = Новый СписокЗначений;
    ОбъектыПечати.Добавить(СсылкаНаДокумент);
	
	КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ЧекККМ");
    ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
    
    Попытка
        ТабличныйДокумент = ОбработкаОбъект.СформироватьПечатнуюФорму(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
	Исключение
      	Сообщить("Не удалось напечатать """ + ИмяВПФ + "'""." + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    КонецПопытки;    
            
КонецПроцедуры
Показать
shalupov61; websamson; user1699266; wolder; eeeio; SeTIrk; serega_new; login1020; Zedd4D; +9 Ответить
18. fixin 4273 18.02.24 18:45 Сейчас в теме
Поделюсь своим, актуальным из практики.
Подробнее: https://geniy1s.ru/proczess-pechati-scheta-oferty-odnoj-knopkoj-alfa-avto-6/

Мне нужно было именно открыть сформированную печатную форму в типовой форме печати:


ПечатьИзВПФКлиент("ПечатнаяФормаСчетаОферты", "СчетОфертаНаОплату", СчетСсылка, ЭтаФорма);


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

Функция НайтиВПФПоИмениОбъекта(ИмяВПФ) Экспорт     
	Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", ИмяВПФ);
КонецФункции
Показать
Оставьте свое сообщение

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