Массовая печать документов

Печать или сохранение документов всех типов, у которых есть печатная форма.

По просьбе бухгалтеров была написана эта обработка. Умеет печатать или сохранять печатные формы документов. Предлагает на выбор печать на принтер, вывод на экран или сохранение в указанный каталог, Есть возможность задать формат (PDF,DOCX,XLS,XLSX) в котором сохранить печатную форму. Обработка не притендует на универсальность, так как требует внесения изменений в конфигурацию.

// Общий модуль - Универсальные механизмы
//
Процедура НапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = "", НепосредственнаяПечать = Ложь, Ссылка = Неопределено, ИмяМакета = "") Экспорт

Если ПечДокумент = Неопределено тогда
Возврат;
КонецЕсли;

// Получить необходимое количество копий
Если КоличествоЭкземпляров > 0 Тогда
ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров;
КонецЕсли;

Если НЕ ПечДокумент.АвтоМасштаб
И НЕ ЗначениеЗаполнено(ПечДокумент.ИмяПринтера) Тогда
ПечДокумент.АвтоМасштаб = Истина;
КонецЕсли;

Если ТипЗнч(НаПринтер) = Тип("Булево") Тогда
Если НаПринтер Тогда
ПечДокумент.Вывод = ИспользованиеВывода.Разрешить;
ПечДокумент.Напечатать(НепосредственнаяПечать = Истина);
Иначе
ФормаПечати = ПолучитьОбщуюФорму("ФормаПечати",, Заголовок + ИмяМакета + Ссылка);
ФормаПечати.Документ = Ссылка;
ФормаПечати.Заголовок = Заголовок;
ФормаПечати.ИмяМакета = ИмяМакета;
ФормаПечати.ПечатныйДокумент = ПечДокумент;
ФормаПечати.Открыть();

КонецЕсли;
ИначеЕсли ТипЗнч(НаПринтер) = Тип("СписокЗначений") Тогда
Каталог = НаПринтер.Получить(0).Значение;
Формат = НаПринтер.Получить(1).Значение;
ИмяФайла = НаПринтер.Получить(2).Значение;

ПечДокумент.Записать(Каталог+ИмяФайла,Формат);
ИначеЕсли ТипЗнч(НаПринтер) = Тип("Массив") Тогда
ПечДокумент.Вывод = ИспользованиеВывода.Разрешить;
ПечДокумент.Напечатать(НепосредственнаяПечать = Истина);

НаПринтер.Добавить(ПечДокумент);
ИначеЕсли ТипЗнч(НаПринтер.Значение) = Тип("Строка") Тогда
Если НаПринтер.Значение = "На экран (Предварительный просмотр)" тогда
ФормаПечати = ПолучитьОбщуюФорму("ФормаПечати",, Заголовок + ИмяМакета + Ссылка);
ФормаПечати.Документ = Ссылка;
ФормаПечати.Заголовок = Заголовок;
ФормаПечати.ИмяМакета = ИмяМакета;
ФормаПечати.ПечатныйДокумент = ПечДокумент;
ФормаПечати.Открыть();

Иначе
ПечДокумент.Имяпринтера = СокрЛп(НаПринтер);
ПечДокумент.Вывод = ИспользованиеВывода.Разрешить;
ПечДокумент.Напечатать(НепосредственнаяПечать = Истина);
КонецЕсли;
КонецЕсли;

//Если НаПринтер Тогда

// ПечДокумент.Напечатать(НепосредственнаяПечать = Истина);

//Иначе

// // Отобразить печатный документ на экране
// //ФормаПечати = ПолучитьОбщуюФорму("ФормаПечати",, Новый УникальныйИдентификатор);
// ФормаПечати = ПолучитьОбщуюФорму("ФормаПечати",, Заголовок + ИмяМакета + Ссылка);
// ФормаПечати.Документ = Ссылка;
// ФормаПечати.Заголовок = Заголовок;
// ФормаПечати.ИмяМакета = ИмяМакета;
// ФормаПечати.ПечатныйДокумент = ПечДокумент;
// ФормаПечати.Открыть();

//КонецЕсли;

КонецПроцедуры // НапечататьДокумент()

Проверял на работоспособнуть на платформе 8.2.19 и выше. Точно могу сказать на платформе 8.2.13 не работает так как нет поддержки PDF.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *