УНФ 1.6 Программно сформировать типовую ПФ и сохранить

1. buketov_av 14.03.19 20:27 Сейчас в теме
Всем добрый вечер!

1С:Предприятие 8.3 (8.3.13.1644)
Управление нашей фирмой, редакция 1.6 (1.6.15.65)

Очень нужна помощь и подсказка.
Сделал внешнюю обработку, по расписанию она выполняет ряд действий, одно из действий это создание на основании счета на оплату, акта выполненных работ, счета фактуры, копирует старый счет на оплату и вносит в него некоторые изменения.
Так вот, теперь мне необходимо программно, из моей внешней обработки, сформировать типовые ПФ Акта выполненных работ, нового счет на оплату и УПД, сохранить и отправить клиенту, который указан в счете на оплату.
Как программно сформировать определенные типовые ПФ для определенных документов, затем их сохранить в pdf и все это дело отправить?
Всем заранее спасибо!
Найденные решения
8. spec8s 825 15.03.19 14:12 Сейчас в теме
(7) Немного не правильно подсказал, сама процедура печати в другом месте оказалась

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

ОбъектыПечати = Новый СписокЗначений; 

МассивОбъектов = Новый Массив(); 
МассивОбъектов.Добавить(НовыйАктВР.Ссылка); 

Обработки.ПечатьСчетФактура.Печать(МассивОбъектов,ПараметрыВывода, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); 

СтрАкт = КоллекцияПечатныхФорм[0]; 
АктПФ = СтрАкт.ТабличныйДокумент; 
АктПФ.Защита = Истина; 
ВремФайлАкт = ПолучитьИмяВременногоФайла("pdf"); 
АктПФ.Записать(ВремФайлАкт,ТипФайлаТабличногоДокумента.PDF);
Показать
unknown181538; +1 Ответить
13. buketov_av 18.03.19 08:53 Сейчас в теме
Вот таким образом победил правильное отображение файлов в отправляемом письме:

		       ДвоичныеДанные = Новый ДвоичныеДанные(ВремФайлСчета);
			Письмо.Вложения.Добавить(ДвоичныеДанные, Строка(ПродлевающийСчет) + ".PDF");
			
			ДвоичныеДанные = Новый ДвоичныеДанные(ВремФайлАкт);
			Письмо.Вложения.Добавить(ДвоичныеДанные, Строка(НовыйАктВР) + ".PDF");
			
			ДвоичныеДанные = Новый ДвоичныеДанные(ВремФайлУпд);
			Письмо.Вложения.Добавить(ДвоичныеДанные, Строка(НовыйСчетФактура) + ".PDF");

Показать
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. spec8s 825 14.03.19 22:37 Сейчас в теме
Для того чтобы формировать типовые нужно

1. Знать идентификаторы типовых печатных форм

Для этого открываем модуль менеджера нужного документа и ищем процедуру ДобавитьКомандыПечати(

2. Вызвать процедуру Печать() менеджера нужного документа

Пример с Актом выполненных работ в УНФ

 ИдентификаторКоманды = Обработки.ПечатьАктаОбОказанииУслуг.ИдентификаторПечатнойФормы(Ложь, Ложь);
	
	МассивОбъектов = Новый Массив;
	МассивОбъектов.Добавить(Объект.СсылкаНаОбъект);
	
	КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(ИдентификаторКоманды);
	
	Документы.АктВыполненныхРабот.Печать(
		МассивОбъектов, Новый Структура, КоллекцияПечатныхФорм, Новый СписокЗначений, 
		УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода());
		
	Если КоллекцияПечатныхФорм.Количество() = 1 Тогда
		
		ПутьСохранения = ПолучитьИмяВременногоФайла("pdf");
		КоллекцияПечатныхФорм[0].ТабличныйДокумент.Записать(ПутьСохранения, ТипФайлаТабличногоДокумента.PDF);
		
	КонецЕсли; 
Показать
3. spec8s 825 14.03.19 22:42 Сейчас в теме
Для отправки могу посоветовать метод РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение()
4. buketov_av 15.03.19 08:41 Сейчас в теме
на данный момент получилось сделать так, но пока не разобрался как УПД сформировать:
Код:
//получаем ПФ Счета на оплату для отправки по почту клиенту
            ОбъектДляСервера      = РеквизитФормыВЗначение("Объект");   
            КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("СчетНаОплату");   
            ПараметрыВывода       = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
           
            ОбъектыПечатиСчета = Новый СписокЗначений; 
           
            МассивОбъектов = Новый Массив();
            МассивОбъектов.Добавить(ПродлевающийСчет.Ссылка);
           
            Документы.СчетНаОплату.Печать(МассивОбъектов,ПараметрыВывода, КоллекцияПечатныхФорм, ОбъектыПечатиСчета, ПараметрыВывода);
           
            СтрСчет = КоллекцияПечатныхФорм[0];
            СчетНаОплатуПФ = СтрСчет.ТабличныйДокумент;
            СчетНаОплатуПФ.Защита = Истина;
            ВремФайлСчета = ПолучитьИмяВременногоФайла("pdf");
            СчетНаОплатуПФ.Записать(ВремФайлСчета,ТипФайлаТабличногоДокумента.PDF);
           
            //получаем ПФ Акта выполненных работ для отправки по почту клиенту
            ОбъектДляСервера      = РеквизитФормыВЗначение("Объект");   
            КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("АктОбОказанииУслуг");   
            ПараметрыВывода       = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
           
            ОбъектыПечати = Новый СписокЗначений; 
           
            МассивОбъектов = Новый Массив();
            МассивОбъектов.Добавить(НовыйАктВР.Ссылка);
           
            Документы.АктВыполненныхРабот.Печать(МассивОбъектов,ПараметрыВывода, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
           
            СтрАкт = КоллекцияПечатныхФорм[0];
            АктПФ = СтрАкт.ТабличныйДокумент;
            АктПФ.Защита = Истина;
            ВремФайлАкт = ПолучитьИмяВременногоФайла("pdf");
            АктПФ.Записать(ВремФайлАкт,ТипФайлаТабличногоДокумента.PDF);
            Письмо.Вложения.Добавить(ВремФайлСчета);            Письмо.Вложения.Добавить(ВремФайлАкт);
Показать
5. buketov_av 15.03.19 09:55 Сейчас в теме
но и как сформировать УПД, если для счета фактуры нет метода печать -
Метод объекта не обнаружен (Печать) Документы.СчетФактура.Печать
6. spec8s 825 15.03.19 11:06 Сейчас в теме
(5)Этот метод расположен в Акте выполненных работ
7. buketov_av 15.03.19 13:10 Сейчас в теме
(6)
чет не получается
подскажите тогда, пожалуйста, как и где указать, чтобы сформировался УПД, а не Акт выполненных работ

Код:
   //получаем ПФ Акта выполненных работ для отправки по почту клиенту
            ОбъектДляСервера      = РеквизитФормыВЗначение("Объект");    
            КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("АктОбОказанииУслуг");    
            ПараметрыВывода       = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
            
            ОбъектыПечати = Новый СписокЗначений;  
            
            МассивОбъектов = Новый Массив();
            МассивОбъектов.Добавить(НовыйАктВР.Ссылка);
            
            Документы.АктВыполненныхРабот.Печать(МассивОбъектов,ПараметрыВывода, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
            
            СтрАкт       = КоллекцияПечатныхФорм[0];
            АктПФ        = СтрАкт.ТабличныйДокумент;
            АктПФ.Защита = Истина;
            ВремФайлАкт  = ПолучитьИмяВременногоФайла("pdf");
            АктПФ.Записать(ВремФайлАкт,ТипФайлаТабличногоДокумента.PDF);
Показать
8. spec8s 825 15.03.19 14:12 Сейчас в теме
(7) Немного не правильно подсказал, сама процедура печати в другом месте оказалась

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

ОбъектыПечати = Новый СписокЗначений; 

МассивОбъектов = Новый Массив(); 
МассивОбъектов.Добавить(НовыйАктВР.Ссылка); 

Обработки.ПечатьСчетФактура.Печать(МассивОбъектов,ПараметрыВывода, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); 

СтрАкт = КоллекцияПечатныхФорм[0]; 
АктПФ = СтрАкт.ТабличныйДокумент; 
АктПФ.Защита = Истина; 
ВремФайлАкт = ПолучитьИмяВременногоФайла("pdf"); 
АктПФ.Записать(ВремФайлАкт,ТипФайлаТабличногоДокумента.PDF);
Показать
unknown181538; +1 Ответить
9. buketov_av 15.03.19 14:32 Сейчас в теме
(8)
Да, спасибо, это сработало. я смотрел на эту обработку )) Вы меня опередили ))
Единственная теперь проблема это то, что УПД сохраняется в альбомном варианте, что разделает ее на два листа.
И имена файлов непонятные. хотелось бы, чтобы они назывались так же ка ки в системе
10. buketov_av 15.03.19 15:02 Сейчас в теме
И вот итоговый код:

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

			ОбъектыПечати = Новый СписокЗначений; 

			МассивОбъектов = Новый Массив(); 
			МассивОбъектов.Добавить(НовыйАктВР.Ссылка); 

			Обработки.ПечатьСчетФактура.Печать(МассивОбъектов,ПараметрыВывода, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); 

			СтрАкт       = КоллекцияПечатныхФорм[0]; 
			АктПФ        = СтрАкт.ТабличныйДокумент; 
			АктПФ.Защита = Истина; 
			ВремФайлУпд  = ПолучитьИмяВременногоФайла("pdf"); 
			АктПФ.Записать(ВремФайлУпд,ТипФайлаТабличногоДокумента.PDF);			
		
			Письмо.Вложения.Добавить(ВремФайлСчета);
			Письмо.Вложения.Добавить(ВремФайлАкт);
			Письмо.Вложения.Добавить(ВремФайлУпд);

Показать
11. spec8s 825 15.03.19 15:51 Сейчас в теме
(10)
Письмо.Вложения.Добавить(ВремФайлСчета);


Письмо.Вложения.Добавить(ВремФайлСчета); - тут надо сином для вложений задать, тогда имя в письме будет корректное
12. buketov_av 15.03.19 16:08 Сейчас в теме
(11) Письмо.Вложения.Добавить(ВремФайлСчета, "Счет на оплату"); - так не работает, все равно в письмо отображается имя временного файла
13. buketov_av 18.03.19 08:53 Сейчас в теме
Вот таким образом победил правильное отображение файлов в отправляемом письме:

		       ДвоичныеДанные = Новый ДвоичныеДанные(ВремФайлСчета);
			Письмо.Вложения.Добавить(ДвоичныеДанные, Строка(ПродлевающийСчет) + ".PDF");
			
			ДвоичныеДанные = Новый ДвоичныеДанные(ВремФайлАкт);
			Письмо.Вложения.Добавить(ДвоичныеДанные, Строка(НовыйАктВР) + ".PDF");
			
			ДвоичныеДанные = Новый ДвоичныеДанные(ВремФайлУпд);
			Письмо.Вложения.Добавить(ДвоичныеДанные, Строка(НовыйСчетФактура) + ".PDF");

Показать
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)