Всем добрый вечер!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

```1c
    ИдентификаторКоманды = Обработки.ПечатьАктаОбОказанииУслуг.ИдентификаторПечатнойФормы(Ложь, Ложь);

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

    КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(ИдентификаторКоманды);

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

    Если КоллекцияПечатныхФорм.Количество() = 1 Тогда

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

    КонецЕсли;
```
---
Для отправки могу посоветовать метод РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение()
---
на данный момент получилось сделать так, но пока не разобрался как УПД сформировать:
Код:

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

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

    МассивОбъектов = Новый Массив();
    МассивОбъектов.Добавить(ПродлевающийСчет.Ссылка);

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

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

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

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

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

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

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

Код:

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

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

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

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

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

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

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

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

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

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

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

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

    МассивОбъектов = Новый Массив();
    МассивОбъектов.Добавить(ПродлевающийСчет.Ссылка);

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

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

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

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

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

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

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

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

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

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

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

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

    Письмо.Вложения.Добавить(ВремФайлСчета);
    Письмо.Вложения.Добавить(ВремФайлАкт);
    Письмо.Вложения.Добавить(ВремФайлУпд);
```
---
Письмо.Вложения.Добавить(ВремФайлСчета);

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

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

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

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