Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

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

УНФ 1.6 Программно сформировать типовую ПФ и сохранить
Я
   buketovav
 
14.03.19 - 20:06
Всем добрый вечер!

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

Очень нужна помощь и подсказка.
Сделал внешнюю обработку, по расписанию она выполняет ряд действий, одно из действий это создание на основании счета на оплату, акта выполненных работ, счета фактуры, копирует старый счет на оплату и вносит в него некоторые изменения.
Так вот, теперь мне необходимо программно, из моей внешней обработки, сформировать типовые ПФ Акта выполненных работ, нового счет на оплату и УПД, сохранить и отправить клиенту, который указан в счете на оплату.
Как программно сформировать определенные типовые ПФ для определенных документов, затем их сохранить в pdf и все это дело отправить?
Всем заранее спасибо!
 
 
   Garykom
 
1 - 14.03.19 - 20:12
1. Посмотреть/изучить как они формируются в конфе
2. Сделать вызовы (в новых конфах с БСП это достаточно просто) этого формирования
3. Получить результат и сохранить куда нуна
   Garykom
 
2 - 14.03.19 - 20:13
В журнале документов (форме списка) есть кнопочка "Печать" ? Вот глянуть туда например ))
   buketovav
 
3 - 14.03.19 - 20:14
есть и общая команда "ОтправитьПоЭлектроннойПочте", но что-то я не могу понять как ее использовать в своих целях
   Beduin
 
4 - 14.03.19 - 20:20
Я когда в институте учился, у меня лабораторка была, чтобы сделать 5 объектов и вывести их на печать.  
Мне препод двояк влепил, за то, что я не сделал универсальную функцию возвращающую печать для любого класса.
   Garykom
 
5 - 14.03.19 - 20:48
(3) Вот когда сможешь понять "как ее использовать в своих целях" заодно поймешь за что такие зарплаты программистам платят, но не всем.
   buketovav
 
6 - 14.03.19 - 20:59
(5) вот сижу и разбираюсь, очень хочу понять и разобраться )) такая задача у меня впервые
   buketovav
 
7 - 15.03.19 - 08:40
на данный момент получилось сделать так, но пока не разобрался как УПД сформировать:
Код:
            //получаем ПФ Счета на оплату для отправки по почту клиенту

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

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

            Письмо.Вложения.Добавить(ВремФайлСчета);           
            Письмо.Вложения.Добавить(ВремФайлАкт);
   buketovav
 
8 - 15.03.19 - 09:55
но и как сформировать УПД, если для счета фактуры нет метода печать - 
Метод объекта не обнаружен (Печать)  Документы.СчетФактура.Печать
   buketovav
 
9 - 15.03.19 - 15:01
Решение:
Код:

//получаем ПФ Счета на оплату для отправки по почту клиенту

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

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

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует