Выгрузка в PDF из 1С (Средствами OpenOffice)

08.10.10

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Функция позволяющая выполнить выгрузку табличного документа в PDF средствами OpenOffice

Тестировалось на OpenOffice 3.x

// Функция превращает табличный документ в PDF документ
// Возвращаемое значение: тип "Строка" - имя созданного PDF файла, 0 - в случае ошибки
// Параметры: ДанныеВыгрузки - Табличный или текстовый документ, который нужно выгрузить в PDF
//            ПутьВыгрузки - тип "Строка", путь для сохраниения PDF файла (без имени и расширения файла)
//            ИмяФайлаБезРасширения - тип "Строка", имя для вновь сформированного PDF файла
//
Функция ВыгрузитьТабличныйДокументВPDF(ДанныеВыгрузки, ПутьВыгрузки, ИмяФайлаБезРасширения)       
    Если НЕ ЗначениеЗаполнено(ПутьВыгрузки) Тогда
        ПутьВыгрузки = КаталогВременныхФайлов();
    КонецЕсли;   
    ПутьВыгрузки         = ?(Прав(ПутьВыгрузки, 1) = "\", ПутьВыгрузки, ПутьВыгрузки + "\");
   
    РасширениеXSL         = ".xls";
    РасширениеPDF         = ".pdf";
    ПолноеИмяФайлаXLS     = ПутьВыгрузки + ИмяФайлаБезРасширения + РасширениеXSL;
    //Выгрузка данных печати в файл XLS   
#Если Клиент Тогда
    Состояние("Создание временного файла...");
#КонецЕсли
    Попытка
        Если         ТипЗнч(ДанныеВыгрузки) = Тип("ТабличныйДокумент") Тогда        
            ДанныеВыгрузки.Записать(ПолноеИмяФайлаXLS, "XLS");
        ИначеЕсли     ТипЗнч(ДанныеВыгрузки) = Тип("ТекстовыйДокумент") Тогда
            ДанныеВыгрузки.Записать(ПолноеИмяФайлаXLS, "XLS");
        Иначе
#Если Клиент Тогда
            Сообщить("Данные для выгрузки переданы в неподдерживаемом формате. Дальнейшее выполнение невозможно." + Символы.ПС + ОписаниеОшибки());
#КонецЕсли
            Возврат 0;
        КонецЕсли;
    Исключение
#Если Клиент Тогда
        Сообщить("Произошла ошибка при выгрузке временного файла. Возможно ошибка доступа к папке, в которую происходит запись." + Символы.ПС + ОписаниеОшибки());
#КонецЕсли
        Возврат 0;
    КонецПопытки;
   
    Попытка
#Если Клиент Тогда
        Состояние("Открытие компоненты OpenOffice...");
#КонецЕсли
        ServiceManager    = Новый COMОбъект("com.sun.star.ServiceManager");       
       
        Скрипт             = Новый COMОбъект("MSScriptControl.ScriptControl");
        Скрипт.language    = "javascript";
        Скрипт.AddObject("OpenOffice", ServiceManager);
       
        //Открытие временного файла без отображения его окна
#Если Клиент Тогда           
        Состояние("Открытие временного файла...");
#КонецЕсли
        Скрипт.eval("Массив=new Array()");       
        Массив             = Скрипт.eval("Массив");       
        Скрипт.eval("Массив[0] = OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
        Скрипт.eval("Массив[0].Name     = 'Hidden'");
        Скрипт.eval("Массив[0].Value = true");
       
        Скрипт.AddCode("function SetItem(ind,val){Массив[ind]=val}");       
        Скрипт.AddObject("ServiceManager",ServiceManager);
        Desktop         = ServiceManager.createInstance("com.sun.star.frame.Desktop");       
        Document         = Desktop.LoadComponentFromURL("file:///" + ПолноеИмяФайлаXLS, "_blank", 0, Массив);
       
        //Сохранение в PDF встроенными средствами OpenOffice
#Если Клиент Тогда           
        Состояние("Запись в PDF...");
#КонецЕсли
        Скрипт.eval("Массив2=new Array()");       
        Массив2     = Скрипт.eval("Массив2");       
        Скрипт.eval("Массив2[0] = OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");       
        Скрипт.eval("Массив2[0].Name  = 'FilterName'");
        Скрипт.eval("Массив2[0].Value = 'writer_pdf_Export'");
       
        ПолноеИмяФайлаPDF         = "file:///" + СтрЗаменить(ПолноеИмяФайлаXLS, РасширениеXSL, РасширениеPDF);
        ПолноеИмяФайлаPDF         = СтрЗаменить(ПолноеИмяФайлаPDF, ВРег(РасширениеXSL), РасширениеPDF);
        ПолноеИмяФайлаPDF        = СтрЗаменить(ПолноеИмяФайлаPDF, "\", "/");       
               
        Document.storeToURL(ПолноеИмяФайлаPDF, Массив2);
        Document.close(-1);        //Закрыть документ
       
        //Контрольная очистка переменных
        Document     = Неопределено;
        Desktop     = Неопределено;
       
        //Удаление временного файла
#Если Клиент Тогда           
        Состояние("Удаление временного файла...");
#КонецЕсли       
        Попытка
            УдалитьФайлы(ПолноеИмяФайлаXLS);
        Исключение
#Если Клиент Тогда           
            Сообщить("Произошла ошибка при удалении временного файла. Возможно, потребуется удалить его вручную." + Символы.ПС + ОписаниеОшибки());
#КонецЕсли
        КонецПопытки;
       
        ПолноеИмяФайлаPDF = СтрЗаменить(ПолноеИмяФайлаPDF, "file:///", "");
        ПолноеИмяФайлаPDF = СтрЗаменить(ПолноеИмяФайлаPDF, "/", "\");
#Если Клиент Тогда
        Состояние("Выгрузка выполнена.");
        Предупреждение("Выгрузка выполнена." + Символы.ПС + ПолноеИмяФайлаPDF);       
#КонецЕсли
        Возврат ПолноеИмяФайлаPDF;
    Исключение
        Document.close(-1);
#Если Клиент Тогда
        Предупреждение(ОписаниеОшибки());
#КонецЕсли
        Возврат 0;
    КонецПопытки   
КонецФункции


См. также

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    134946    723    291    

388

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68425    179    138    

111

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34172    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 25200 руб.

23.07.2020    46301    196    64    

158

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9212    9    8    

10

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20255    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 45650 руб.

10.07.2018    67448    41    122    

46

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150730    367    375    

501
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Трактор 1246 08.10.10 15:54 Сейчас в теме
Баян.

Вместо конструкции
        Скрипт             = Новый COMОбъект("MSScriptControl.ScriptControl");
        Скрипт.language    = "javascript";
        Скрипт.AddObject("OpenOffice", ServiceManager);
        Скрипт.eval("Массив=new Array()");        
        Массив             = Скрипт.eval("Массив");

Можно написать так
Массив = Новый COMSafeArray("VT_VARIANT", 1);

Тут подробнее http://infostart.ru/public/20710/
2. cool.dkf 08.10.10 17:37 Сейчас в теме
Через yoksel же проще. ...вот кто бы переделал косячный механизм конвертирования в xls...особенно рисунков...
3. halushka 09.10.10 07:30 Сейчас в теме
Может через Ёксель и проще передавать, но через ПДФ всяко проще получать.
Плюс за вариант с опенофисом. Чтот в эту сторону я не думал..
4. dyolga 01.11.10 00:06 Сейчас в теме
А куда вставить эту функцию, например если я хочу сохранить из 1С счет со вставленной печатью(как рисунок) в формат PDF и отправить клиенту? Буду очень благодарна за подсказку.
5. doom_2001 23 01.11.10 13:45 Сейчас в теме
Вставлять рекомендую в место, где у Вас формируется табличный документ, т.к. он является первым обязательным параметром функции.
В общем варианте можно вставить в модуль объекта обработки с атрибутом "Экспорт", тогда можно будет использовать из любого места обработки.

Оставьте свое сообщение