Печать или сохранение документов всех типов, у которых есть печатная форма.
По просьбе бухгалтеров была написана эта обработка. Умеет печатать или сохранять печатные формы документов. Предлагает на выбор печать на принтер, вывод на экран или сохранение в указанный каталог, Есть возможность задать формат (PDF,DOCX,XLS,XLSX) в котором сохранить печатную форму. Обработка не притендует на универсальность, так как требует внесения изменений в конфигурацию.
// Общий модуль - Универсальные механизмы
//
Процедура НапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = "", НепосредственнаяПечать = Ложь, Ссылка = Неопределено, ИмяМакета = "") Экспорт
Если ПечДокумент = Неопределено тогда
Возврат;
КонецЕсли;
// Получить необходимое количество копий
Если КоличествоЭкземпляров > 0 Тогда
ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров;
КонецЕсли;
Если НЕ ПечДокумент.АвтоМасштаб
И НЕ ЗначениеЗаполнено(ПечДокумент.ИмяПринтера) Тогда
ПечДокумент.АвтоМасштаб = Истина;
КонецЕсли;
Если ТипЗнч(НаПринтер) = Тип("Булево") Тогда
Если НаПринтер Тогда
ПечДокумент.Вывод = ИспользованиеВывода.Разрешить;
ПечДокумент.Напечатать(НепосредственнаяПечать = Истина);
Иначе
ФормаПечати = ПолучитьОбщуюФорму("ФормаПечати",, Заголовок + ИмяМакета + Ссылка);
ФормаПечати.Документ = Ссылка;
ФормаПечати.Заголовок = Заголовок;
ФормаПечати.ИмяМакета = ИмяМакета;
ФормаПечати.ПечатныйДокумент = ПечДокумент;
ФормаПечати.Открыть();
КонецЕсли;
ИначеЕсли ТипЗнч(НаПринтер) = Тип("СписокЗначений") Тогда
Каталог = НаПринтер.Получить(0).Значение;
Формат = НаПринтер.Получить(1).Значение;
ИмяФайла = НаПринтер.Получить(2).Значение;
ПечДокумент.Записать(Каталог+ИмяФайла,Формат);
ИначеЕсли ТипЗнч(НаПринтер) = Тип("Массив") Тогда
ПечДокумент.Вывод = ИспользованиеВывода.Разрешить;
ПечДокумент.Напечатать(НепосредственнаяПечать = Истина);
НаПринтер.Добавить(ПечДокумент);
ИначеЕсли ТипЗнч(НаПринтер.Значение) = Тип("Строка") Тогда
Если НаПринтер.Значение = "На экран (Предварительный просмотр)" тогда
ФормаПечати = ПолучитьОбщуюФорму("ФормаПечати",, Заголовок + ИмяМакета + Ссылка);
ФормаПечати.Документ = Ссылка;
ФормаПечати.Заголовок = Заголовок;
ФормаПечати.ИмяМакета = ИмяМакета;
ФормаПечати.ПечатныйДокумент = ПечДокумент;
ФормаПечати.Открыть();
Иначе
ПечДокумент.Имяпринтера = СокрЛп(НаПринтер);
ПечДокумент.Вывод = ИспользованиеВывода.Разрешить;
ПечДокумент.Напечатать(НепосредственнаяПечать = Истина);
КонецЕсли;
КонецЕсли;
//Если НаПринтер Тогда
// ПечДокумент.Напечатать(НепосредственнаяПечать = Истина);
//Иначе
// // Отобразить печатный документ на экране
// //ФормаПечати = ПолучитьОбщуюФорму("ФормаПечати",, Новый УникальныйИдентификатор);
// ФормаПечати = ПолучитьОбщуюФорму("ФормаПечати",, Заголовок + ИмяМакета + Ссылка);
// ФормаПечати.Документ = Ссылка;
// ФормаПечати.Заголовок = Заголовок;
// ФормаПечати.ИмяМакета = ИмяМакета;
// ФормаПечати.ПечатныйДокумент = ПечДокумент;
// ФормаПечати.Открыть();
//КонецЕсли;
КонецПроцедуры // НапечататьДокумент()
Проверял на работоспособнуть на платформе 8.2.19 и выше. Точно могу сказать на платформе 8.2.13 не работает так как нет поддержки PDF.