В функцию передается Ссылка на объект для которого есть внешняя печатная форма в справочнике "Дополнительные внешние печатные формы",Имя внешней формы как она задана в справочнике, количество экземпляров на печать, печать на принтер ,имя принтера.
Процедура НапечататьВнешнююФорму (СсылкаНаОбъект,ИмяВнешнийФормы,КоличествоЭкземпляров,НаПечать = Ложь,ИмяПринтера = "") Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВнешниеОбработкиПринадлежность.Ссылка КАК Ссылка,
| ВнешниеОбработкиПринадлежность.ЗаменяемаяПечатнаяФорма КАК ЗаменяемаяПечатнаяФорма,
| ВнешниеОбработкиПринадлежность.Ссылка.ВидОбработки КАК ВидОбработки,
| ВнешниеОбработкиПринадлежность.НомерСтроки
|ИЗ
| Справочник.ВнешниеОбработки.Принадлежность КАК ВнешниеОбработкиПринадлежность
|ГДЕ
|
| ВнешниеОбработкиПринадлежность.СсылкаОбъекта = &Ссылка
| И (ВнешниеОбработкиПринадлежность.Ссылка.ВидОбработки = &ВидОбработкиПечатнаяФорма)
| И (НЕ ВнешниеОбработкиПринадлежность.ЗаменяемаяПечатнаяФорма ССЫЛКА Справочник.ВнешниеОбработки)
| И (НЕ ВнешниеОбработкиПринадлежность.Ссылка.ПометкаУдаления)
| И ВнешниеОбработкиПринадлежность.Ссылка.Наименование = &АктОтгрузки ";
ЭтоДокумент = Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект));
ЭтоСправочник = Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект));
Если ЭтоДокумент Тогда
Запрос.УстановитьПараметр("Ссылка", Документы[СсылкаНаОбъект.Метаданные().Имя].ПустаяСсылка()); //СсылкаНаОбъект.Метаданные()
КонецЕсли;
Если ЭтоСправочник Тогда
Запрос.УстановитьПараметр("Ссылка", Справочники[СсылкаНаОбъект.Метаданные().Имя].ПустаяСсылка());
КонецЕсли;
Запрос.УстановитьПараметр("ВидОбработкиПечатнаяФорма", Перечисления.ВидыДополнительныхВнешнихОбработок.ПечатнаяФорма);
Запрос.УстановитьПараметр("АктОтгрузки", ИмяВнешнийФормы);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
СтруктураРасшифровки = Новый Структура("ВидПечатнойФормы, СсылкаНаВнешнююОбработку, ЗаменяемаяПечатнаяФорма, НомерСтроки",
Выборка.ВидОбработки,Выборка.Ссылка, Выборка.ЗаменяемаяПечатнаяФорма, Выборка.НомерСтроки);
ТабДок = УниверсальныеМеханизмы.НапечататьВнешнююФорму(СсылкаНаОбъект,СтруктураРасшифровки);
ТабДок.ИмяПринтера = ИмяПринтера;
ТабДок.КоличествоЭкземпляров = КоличествоЭкземпляров;
Если Не НаПечать Тогда
ТабДок.Показать();
Иначе
Попытка
ТабДок.Напечатать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки
КонецЕсли;
КонецПроцедуры