Имя: Пароль:
1C
 
1C xls PDF
0 voka_64
 
11.01.10
17:29
Знаю, что тема не раз обсуждалась. Просто не охото изобретать велосипед
Поделитесь кодом как файл xls перегнать в PDF используя PDFCreator
1 Попытка1С
 
11.01.10
17:35
А поискать типа в лом?
2 voka_64
 
11.01.10
17:39
Я искал и нашел.Говорит, что нет информации для вывода на печать.
3 France
 
11.01.10
17:40
1. установить пдф-принтер
2. отравить на печать на пдф принтер.
4 voka_64
 
11.01.10
17:40
Я понимаю, что запутался с передачей парметра таблицы.
/+Ковалевский В.В.@___WORK___, 2010-01-11 11:56:20
Функция глРежимФайлаОтчета()
   Перем Режим;
   Режим = "xls"; // по умолчанию
   // если установден PDFCreator
   Попытка
       WshShell = createObject("wScript.shell");
       PDFCreater = WshShell.RegRead("HKCU\"+"Software\PDFCreator\Program\Language");
       Если ПустоеЗначение(PDFCreater)=0 Тогда
           Режим = "pdf";
           Возврат Режим;
       конецесли;
   исключение
   
   конецпопытки;
   Возврат Режим;
КонецФункции
// подготовим выходной файл
////
Функция глПечатьВоВнешнийФайл(Таб, парИмяФайла="printdoc") Экспорт

   Перем ВыхФайл,ПутьПТП;
   РежимФайла = глРежимФайлаОтчета();
   // Excel
   Если РежимФайла = "xls" Тогда
       ЕмФайл = КаталогВременныхФайлов() + парИмяФайла;
       
       Попытка
           //Таб.Записать(ЕмФайл, "XLS");
           ВыхФайл = ЕмФайл+".xls";
       Исключение

       КонецПопытки;
       // PDFCreator
   ИначеЕсли РежимФайла = "pdf" Тогда
       
       ПутьПТП = КаталогВременныхФайлов();
       ИмяФайла_xls = "e:\Bases_2\КонвертацияPDF\Печать____.xls";
       ПутьПТП = "e:\Bases_2\КонвертацияPDF\";
       
       //Печать на PDF
       WshShell = createObject("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\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";
       ФС.УдалитьФайл(ЛогФайл);
       //Таб = СоздатьОбъект("Таблица");
       Таб.ПараметрыСтраницы(1,,,,,,,,,1,,"PDFCreator");
       Таб.Напечатать(0); // печатем
       // ждем
       повторов = 0;
       Неудалось = 0;
       Пока ФС.СуществуетФайл(ЛогФайл)=0 цикл
           Для i=1 По 10000 Цикл
           КонецЦикла;
           Состояние("подготовка графического файла");
           повторов = повторов + 1;
           Если повторов = 1000 тогда
               Неудалось = 1;
               Прервать;
           КонецЕсли;
       конеццикла;
       Если Неудалось = 0 тогда // есть файл
           ВыхФайл = ЛогФайл;
       КонецЕсли;
   КонецЕсли;
   
   Возврат ВыхФайл;
КонецФункции

Процедура Сформировать()
   ИмяФайла_xls = "e:\Bases_2\КонвертацияPDF\Печать____.xls";
   парИмяФайла = ИмяФайла_xls;
   парИмяФайла = "Печать____.xls";
   
   Таб = СоздатьОбъект("Таблица");
   
   //Таблица.Записать(имя_файла,1);

   
   ВыхФайл = глПечатьВоВнешнийФайл(Таб, парИмяФайла);
   Сообщить("ВыхФайл " + СокрЛП(ВыхФайл));
   

КонецПроцедуры    // Сформировать

Но мне то надо файл xls подсунуть как-то
5 voka_64
 
11.01.10
17:41
Установил.
Файл XLS у меня раньше сформирован просто.
6 France
 
11.01.10
17:44
открываешь и печатаеш "как на принтер" - т.е, "Печать" - затем выбрать принтер.. и тд и тп)
7 voka_64
 
11.01.10
17:47
Надо делать это автоматом.
Потому, что это заявки и них есть штрих код заявки.
Open Ofiice не правильно интерпретирует его и код не читается на сканерах.
Заявки создаются в 1С формата xls и не которым у которых нет Excel надо отправлять в PDF. И хочется делать это автоматом.
8 mad hatter
 
11.01.10
18:56
у майкрософта можно скачать бесплатный элсельный вьювер..
эксель будет открываться на просмотр и печататься, как и пдф
9 mad hatter
 
11.01.10
18:56
элсельный = эксельный
10 NikVars
 
11.01.10
19:09
(7) Чего мудришь-то?!
Я делал другим принтером. Рекомендую.

Делал так:

1) Установить принтер для выгрузки файлов в формате PDF
Сам принтер BullzipPDFPrinter
http://www.bullzip.com
Принтер использует библиотеку Ghostscript с номером 8.64 или выше, которую можно скачать на том же сайте
Ghostscript для BullzipPDFPrinter
http://www.bullzip.com/download/gsl/gslite.exe

2) В Пуск-Настройки - Принтеры и факсы появится принтер Bullzip PDF Printer

3) В Пуск-Программы - появится новая папка Bullzip.

4) Входим в Пуск-Программы-Bullzip-PDF Printer-Настройки.
Выбираем вкладки Общие-Имя файла, где указываем строку: C:\BestPapka\<docname>.pdf
Имя файла должно содержать путь-папку для выгрузки документов в формате PDF  и маску <docname>.pdf
которая говорит о том, что имя будет автоматически генерироваться.
Выбираем вкладки Безопасность-Пароль владельца (нужен для защиты от изменения документа)

5) В обработке по формированию PDF документов должно быть указано с каким именем и на какой принтер отправлять документ
ИмяФайла = Лев(Формат(пДок.ДатаДок, "ДГГГГММДД"), 6)+ "_Akt_"+Строка(пФайл);
пТаб.ПараметрыСтраницы(1,,,,5,10,10,0,5,,1,"Bullzip PDF Printer");
пТаб.Показать(ИмяФайла);
пТаб.Напечатать(0);

Хоть по одному, хоть в цикле рубай пункт 5.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший