14.
minimaxpo
31.03.09 16:04
Сейчас в теме
Спасибо за отличную реализацию конвартации печатных форм 1с в PDF.
Переписал для 8.1:
Функция глРежимФайлаОтчета()
Перем Режим;
Режим = "xls"; // по умолчанию
// если установден PDFCreator
Попытка
WshShell = Новый COMОбъект("wScript.shell");
PDFCreater = WshShell.RegRead("HKCU\Software\PDFCreator\Program\Language");
Если ЗначениеЗаполнено(PDFCreater) Тогда
Режим = "pdf";
Возврат Режим;
конецесли;
исключение
конецпопытки;
Возврат Режим;
КонецФункции
// подготовим выходной файл
//
Функция глПечатьВоВнешнийФайл(Таб, парИмяФайла="invoice") Экспорт
Перем ВыхФайл,ПутьПТП;
ВыхФайл = "";
РежимФайла = глРежимФайлаОтчета();
// Excel
Если РежимФайла = "xls" Тогда
ЕмФайл = КаталогВременныхФайлов() + парИмяФайла;
Попытка
Таб.Записать(ЕмФайл+".xls", "XLS");
ВыхФайл = ЕмФайл+".xls";
Исключение
КонецПопытки;
// PDFCreator
ИначеЕсли РежимФайла = "pdf" Тогда
ПутьПТП = КаталогВременныхФайлов();
//Печать на PDF
WshShell = Новый COMОбъект("wScript.shell");
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\AutosaveFilename" ,парИмяФайла); // имя файла
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\AutosaveDirectory",ПутьПТП); // путь автосохранеия
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\UseAutosave","1"); // автосохранение
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\UseAutosaveDirectory","1"); // сохранять в
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\AutosaveFormat","0"); // формат - PDF
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\AutosaveStartStandardProgram","0"); // Не открываем файл
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Printing\Formats\PDF\Colors\PDFColorsColorModel","2"); // цвет - серый
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Printing\Formats\PDF\Security\PDFUseSecurity","1"); // защита PDF
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Printing\Formats\PDF\Security\PDFDisallowCopy","1"); // защита PDF
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Printing\Formats\PDF\Security\PDFDisallowModifyContents","1"); // защита PDF
ЛогФайл = Новый Файл(ПутьПТП+парИмяФайла+".pdf");
Если ЛогФайл.Существует() Тогда
УдалитьФайлы(ПутьПТП+парИмяФайла+".pdf",);
КонецЕсли;
//ФС.УдалитьФайл(ЛогФайл);
Таб.ИмяПринтера = "PDFCreator";
УниверсальныеМеханизмы.НапечататьДокумент(Таб, 1, Истина);
//Таб.ПараметрыСтраницы(1,,,,,,,,,1,,"PDFCreator");
//Таб.Напечатать(0); // печатем
// ждем
повторов = 0;
Неудалось = 0;
ЛогФайл = Новый Файл(ПутьПТП+парИмяФайла+".pdf");
Пока НЕ ЛогФайл.Существует() цикл
Для i=1 По 10000 Цикл
ОбработкаПрерыванияПользователя();
КонецЦикла;
Состояние("подготовка графического файла");
повторов = повторов + 1;
Если повторов = 1000 тогда
Неудалось = 1;
Прервать;
КонецЕсли;
Конеццикла;
Если Неудалось = 0 тогда // есть файл
ВыхФайл = ПутьПТП+парИмяФайла+".pdf";
КонецЕсли;
КонецЕсли;
Возврат ВыхФайл;
КонецФункции