Имя: Пароль:
1C
1С v8
Напечатать несколько PDF файлов из 1С
0 Evil-Wisp
 
24.09.10
06:47
В базе в регистре хранятся имена PDF файлов, соответствующих номенклатуре. Пользоателю из реализации нужно выводить на предосмотр и печать все pdf файлы, соответствующие номенклатуре из табличной части.
Вопрос: Как сделать предосмотр всех файлов сразу(как бы соединить документы), либо напечатать сразу все документы?
Пока сделал просмотр через оъект ActiveX - Adobe PDF reader отдельного файла, но не получается отправить на печать сразу все документы.
Заранее спасибо!
1 Андрюха
 
24.09.10
06:49
Word 2007/2010 понимает pdf, может через него как-нибудь
2 Evil-Wisp
 
24.09.10
06:56
Чем может помочь word? мне нужно отправить на печать несколько pdf документов, или соединить их в один и распечатать
3 Мимохожий Однако
 
24.09.10
07:41
Осталось в объекте Адоба найти метод для печати
4 Evil-Wisp
 
24.09.10
07:51
Там есть метод печати Printall(), но если попытаться в цикле сделать перебор документов и их печать, выдается ошибка о занятости принтера и печатается только первый док.
5 smaharbA
 
24.09.10
08:01
у ридера вполне вменяемая командная строка
6 Evil-Wisp
 
24.09.10
08:03
(5)Как ее использовать через 1С?
7 Fragster
 
гуру
24.09.10
08:07
(6) командасистемы?
8 Fragster
 
гуру
24.09.10
08:07
wscript.shell?
9 ShoGUN
 
24.09.10
08:07
(6) ЗапуститьПриложение/КомандаСистемы
10 Evil-Wisp
 
24.09.10
08:13
(7,9)Спасибо!
11 idw
 
24.09.10
08:14
(0)

Процедура СохранениеВПДФ(СсылкаНаОбъект, ТабДокумент) Экспорт
   ИмяКаталогаПДФ = Константы.ИмяКаталогаПДФ.Получить();
   Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") тогда
        ИмяФайла = "СЧ_"+Формат(СсылкаНаОбъект.Дата,"ДФ=yyyy-MM-dd")+"_"+СокрЛП(СсылкаНаОбъект.ИДКлиента)+".pdf";
   ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.РеализацияТоваровУслуг") тогда
        ИмяФайла = "РЕ_"+Формат(СсылкаНаОбъект.Дата,"ДФ=yyyy-MM-dd")+"_"+СокрЛП(СсылкаНаОбъект.ИДКлиента)+".pdf";
   ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.СчетФактураВыданный") тогда
        ИмяФайла = "СФ_"+Формат(СсылкаНаОбъект.Дата,"ДФ=yyyy-MM-dd")+"_"+СокрЛП(СсылкаНаОбъект.ИДКлиента)+".pdf";
   Иначе ИмяФайла ="";    
       
   КонецЕсли;
   
   //ОбъектПринтер = Новый COMObject("PDFCreator.clsPDFCreator");
   //ОбъектПринтер.cStart("/NoProcessingAtStartup");
   //PDFПринтеры = ОбъектПринтер.cGetPDFCreatorPrinters();
   //НаборОпций=ОбъектПринтер.cReadOptions();
   //НаборОпций.UseAutosave=1; // автосохранение
   //НаборОпций.UseAutosaveDirectory = 1; // сохранять в
   //НаборОпций.AutosaveDirectory = ИмяКаталогаПДФ;  // путь автосохранеия
   //НаборОпций.AutosaveFilename = "СЧ_"+Формат(СсылкаНаОбъект.Дата,"ДФ=yyyy-MM-dd")+"_"+СокрЛП(СсылкаНаОбъект.Номер)+"_"+СокрЛП(СсылкаНаОбъект.ИДКлиента)+".pdf"; // имя файла
   ////НаборОпций.AutosaveFilename = "111.pdf";
   //НаборОпций.AutosaveFormat = 0;    // формат - PDF
   //
   //ОбъектПринтер.cOptions=НаборОпций;
   //
   //ОбъектПринтер.cClearcache();
   //ОбъектПринтер.cPrinterStop = Ложь;
   //ОбъектПринтер.cStart();
   //
   //ТабДокумент.ИмяПринтера = PDFПринтеры.Item(1);
   //ТабДокумент.Напечатать(ИСТИНА);
   
   ////*****************************************************
   PDFCreator = Новый ComОбъект("PDFCreator.clsPDFCreator");
   PDFCreator.cStart ("/NoProcessingAtStartup");
   
   PDFCreatorOptions = PDFCreator.cOptions();
   // Устанавливаем обязательные параметры
   
   # Если Не Клиент тогда
       
       PDFCreatorOptions.ShowAnimation = False;
       PDFCreatorOptions.NoConfirmMessageSwitchingDefaultprinter =True;
       
   # КонецЕсли
   
   PDFCreatorOptions.NoConfirmMessageSwitchingDefaultprinter =True;
   PDFCreatorOptions.UseAutosave= 1;  
   PDFCreatorOptions.UseAutosaveDirectory = 1;
   PDFCreatorOptions.AutosaveFormat = 0 ;  // 0 = PDF
   
   
   DefaultPrinter = PDFCreator.cDefaultprinter;
   
   PDFCreator.cClearcache();
   PDFCreator.cPrinterStop = false;
   PDFCreator.cDefaultprinter = "PDFCreator";
   // Устанавливили обязательные параметры
   
   // Устанавливили параметры для документа, переданные в функцию    
   
   PDFCreatorOptions.AutosaveDirectory = ИмяКаталогаПДФ;
   PDFCreatorOptions.AutosaveFilename = ИмяФайла;
   
   PDFCreator.cOptions = PDFCreatorOptions;
   
   Готово = Ложь;
   Старт = ТекущаяДата();
   ТабДокумент.Напечатать(Истина);
   PDFCreator.cDefaultprinter = DefaultPrinter;
   
   Пока ТекущаяДата() - Старт < 30 Цикл
       
       ОбработкаПрерыванияПользователя();
       
       //ПриостановкаВыполнения(150);
       ном = 0;
       Пока Ном < 10 Цикл
           ном = ном + 1;
       КонецЦикла;
       
       ИмяИтоговыйФайл = PDFCreator.cOutputFileName;
       Если ЗначениеЗаполнено(ИмяИтоговыйФайл) и ТекущаяДата()-Старт > 1 тогда
           Готово = Истина;
           Прервать;
       КонецЕсли
   КонецЦикла;
   # Если клиент тогда
       
       Если не Готово Тогда
           Предупреждение("Внимание! Документ не создан !");
       КонецЕсли;
   # КонецЕсли
   
   
   PDFCreator.cClearcache();
   PDFCreator.cClose();
   PDFCreator = Неопределено;
   
КонецПроцедуры
12 idw
 
24.09.10
08:15
Используй программку PDFCreator, она позволяет сохранять документы в pdf, объединять их.
13 Fragster
 
гуру
24.09.10
08:17
(11) интересненько
14 idw
 
24.09.10
08:20
(11) этот кусок у меня сохраняет в пдф печатные формы документов из обработки групповая печать в определенный каталог.
15 Evil-Wisp
 
24.09.10
09:51
Подскажите как в коммандной строке напечатать несколько документов:)
КомандаСистемы("""D:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe"" /t 1.pdf");
КомандаСистемы("""D:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe"" /t 2.pdf");
если по очереди печатать, то долго получается.
16 Evil-Wisp
 
24.09.10
10:54
Или все таки придется объединять все в один документ?
17 smaharbA
 
24.09.10
11:15
печатай "враз" через
ЗапуститьПриложение()
18 Evil-Wisp
 
24.09.10
11:32
(17) Спасибо, все быстро теперь:)
А можно программно закрыть акробат после завершения печати?
19 smaharbA
 
24.09.10
11:34
можно
20 Evil-Wisp
 
24.09.10
11:53
Как я понимаю нужно указать параметр для акробата, чтобы он сам закрылся? Если не секрет, то какой?
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший