В функции получаю печатные формы, для дальнейшей передачи через вложение.
Печатную форму Накладная(макет в документе) и РублевыеСуммыДокументаВВалюте(макет в обработке) получаю без проблем. Не понимаю, как получить печатную форму внешней печатной формы.
Что указывать в ИмяМенеджераПечати?

```1c
    //Получаем печатную форму во временное хранилище
    Функция СформироватьВложение(Выборка)

    МД = Метаданные.НайтиПоТипу(ТипЗнч(Выборка.Объект));
    ТекВид = МД.Имя;

    МассивОбъектов = Новый Массив();
    МассивОбъектов.Добавить(Выборка.Объект);
    ПараметрыПечати = Новый Структура();
    ДопустимыеТипыОбъектовПечати = Неопределено;

    Если ТекВид = "РеализацияТоваровУслуг" Тогда
    ИмяМенеджераПечати = "ВнешняяПечатнаяФорма.ПФ_УПД_Бренд2";
    ИменаМакетов = "УниверсальныйПередаточныйДокумент";

    //ИмяМенеджераПечати = "Документ.РеализацияТоваровУслуг";
    //ИменаМакетов = "Накладная";

    //ИмяМенеджераПечати = "Обработка.ПечатьРублевыхСуммДокументовВВалюте";
    //ИменаМакетов = "РублевыеСуммыДокументаВВалюте";

    Иначе
    Возврат Неопределено;
    КонецЕсли;

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

    Возврат ПоместитьВоВременноеХранилище(ДвоичныеДанные);

    КонецФункции
```
---
Как-то делала подобное в ERP, тоже надо было при отправке письма автоматически добавлять договор во вложения из внешней печатной формы. Делала так:

```1c
    ВнешняяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта","имяВнешнейПечатнойФормы");
    ДвоичныеДанные = ВнешняяОбработка.ХранилищеОбработки.Получить();
    ИмяФайла = ПолучитьИмяВременногоФайла("epf");
    ДвоичныеДанные.Записать(ИмяФайла);
    ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
    ПечатнаяФормаДоговора = ВнешняяОбработка.СформироватьПечатнуюФорму(ЗаказСсылка);
    // СформироватьПечатнуюФорму - это имя экспортной процедуры из внешней печатной формы,
    // в моем случае она получает ссылку на заказ для формирования печатной формы договора
```

Далее получайте двоичные данные и передавайте куда-надо.
---
Ну или еще как вариант, добавить во внешней обработке реквизит, например с именем ДляПередачи типа ТабличныйДокумент, в процедуре "Печать", присваивать ему значение сформированного табличного документа, и создать функцию, которая будет вызывать процедуру "Печать" и возвращать реквизит - ДляПередачи.
Например:

```1c
    ПечатнаяФормаДоговора = ВнешняяОбработка.ПолучитьПечатнуюФорму(Выборка.Объект);
```

А в модуле внешней печатной формы:

```1c
    Процедура Печать(Объект)
    ТабличныйДокумент = Новый ТабличныйДокумент;
    // его заполнение
    .............
    ДляПередачи = ТабличныйДокумент;
    КонецПроцедуры

    Функция ПолучитьПечатнуюФорму(Объект)
    Печать(Объект);
    Возврат ДляПередачи;
    КонецФункции
```
---
Если просто получить макет, то примерно так:
objObject = FormAttributeToValue("Object");
Template = objObject.GetTemplate("ИмяМакета");

Object - это основной реквизит формы типа внешняя обработка
---
```1c
    ИмяМенеджераПечати = "ВнешняяПечатнаяФорма.ПФ_УПД_Бренд2";
    ИменаМакетов = "УниверсальныйПередаточныйДокумент";
```

Вставляю название внешней печатной формы, так не срабатывает
---
Как-то делала подобное в ERP, тоже надо было при отправке письма автоматически добавлять договор во вложения из внешней печатной формы. Делала так:

```1c
    ВнешняяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта","имяВнешнейПечатнойФормы");
    ДвоичныеДанные = ВнешняяОбработка.ХранилищеОбработки.Получить();
    ИмяФайла = ПолучитьИмяВременногоФайла("epf");
    ДвоичныеДанные.Записать(ИмяФайла);
    ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
    ПечатнаяФормаДоговора = ВнешняяОбработка.СформироватьПечатнуюФорму(ЗаказСсылка);
    // СформироватьПечатнуюФорму - это имя экспортной процедуры из внешней печатной формы,
    // в моем случае она получает ссылку на заказ для формирования печатной формы договора
```

Далее получайте двоичные данные и передавайте куда-надо.
---
Спасибо, буду пробовать
---
ПечатнаяФормаДоговора = ВнешняяОбработка.Печать(Выборка.Объект);
Вот когда так указываю процедуру, появляется ошибка: Обращение к процедуре объекта как к функции (Печать).
Это и логично, процедура ничего не возвращает, как быть?
---
Попробуйте во внешней обработке процедуру "Печать" переделать на функцию с возвратом формируемого табличного документа.
---
Да такое решение в голову приходило, только не уверен, что это мне согласуют)
---
ну вам в любом случае надо получать сформированный и заполненный табличный документ. Тут как ни крути, что-то где-то придется менять во внешней обработке. Вариант изменить процедуру на функцию, самый простой.
---
Ну или еще как вариант, добавить во внешней обработке реквизит, например с именем ДляПередачи типа ТабличныйДокумент, в процедуре "Печать", присваивать ему значение сформированного табличного документа, и создать функцию, которая будет вызывать процедуру "Печать" и возвращать реквизит - ДляПередачи.
Например:

```1c
    ПечатнаяФормаДоговора = ВнешняяОбработка.ПолучитьПечатнуюФорму(Выборка.Объект);
```

А в модуле внешней печатной формы:

```1c
    Процедура Печать(Объект)
    ТабличныйДокумент = Новый ТабличныйДокумент;
    // его заполнение
    .............
    ДляПередачи = ТабличныйДокумент;
    КонецПроцедуры

    Функция ПолучитьПечатнуюФорму(Объект)
    Печать(Объект);
    Возврат ДляПередачи;
    КонецФункции
```
---
Спасибо, реализовал через реквизит