Конвертировать MXL в PDF (XLS...) #651976


#0 by Dmitriy_Kolesnikov
Доброе утро! Есть такая задача: подключаюсь к 8.1 через ВнешнееСоединение, формирую ТабличныйДокумент (счёт, акт, сф...) и выгружаю. Выгрузить из 8.1 можно только в txt и mxl, другие форматы для ТабличныйДокумент.Записать в режиме внешнего соединения недоступны. Вопрос в том, как дальше этот полученный MXL преобразовать в другой формат (в идеале pdf, но пойдёт любой другой). Что уже обсуждалось и не подошло: ТабличныйДокумент.Напечатать - не работает в режиме внешнего соединения Йоксель - не понимает на входе MXL, сохранённый из 8.1 с помощью ТабличныйДокумент.Записать(<Имя файла>, ТипФайлаТабличногоДокумента.MXL или MXL7) Какие ещё есть варианты? Исходим из того, что есть готовый ТабличныйДокумент.
#1 by Wobland
обработка для "в хтмл" подойдёт?
#2 by Balabass
пачать в ПДФ не предлагать?
#3 by Dmitriy_Kolesnikov
как MXL конвертировать в HTML? Напрямую выгрузить в HTML нельзя: ТабличныйДокумент (SpreadsheetDocument) Записать (Write) Синтаксис: Записать(<Имя файла>, <Тип файла таблицы>) Параметры: <Имя файла> (обязательный) Тип: Строка. Имя файла, в котором сохраняется табличный документ. <Тип файла таблицы> (необязательный) Тип: ТипФайлаТабличногоДокумента. Формат, в котором будет сохранен табличный документ. Значение по умолчанию: MXL Описание: Записывает табличный документ в файл. Примечание: При работе на сервере или через com-соединение использует только файлы форматов mxl и txt.
#4 by Dmitriy_Kolesnikov
см. - метод Напечатать недоступен в режиме внешнегоСоединения.
#5 by Wobland
обработкой
#6 by Balabass
Передать разве нельзя табличный документ дальше?
#7 by Wobland
у меня была похожая беда (регзадание на сервере). куда передать, когда результат должен сам лежать готовый? ;)
#8 by Dmitriy_Kolesnikov
обработкой - это интересно. Поделитесь обработкой? куда передать?
#9 by Wobland
"распарсивание" формата mxl. куда тебе? //её ещё в бардачке найти надо
#10 by Dmitriy_Kolesnikov
kolesnikov_d_n@mail.ru
#11 by rphosts
нашёл?
#12 by Wobland
плин, извините, коллеги, не вижу. есть ещё одно место, но в него попасть сложно - материнка померла ;)
#13 by Dmitriy_Kolesnikov
:(
#14 by Dmitriy_Kolesnikov
Wobland, общую идею не помните? Может намекнёте, а дальше сам напишу и поделюсь со всеми.
#15 by Нуф-Нуф
Подключиться к базе. Сохранить в мхл. Из текущей базы открыть сохраненный мхл. Передам мать в нужном формате
#16 by Wobland
там был жестокий разбор формата. я б не рискнул
#17 by Wobland
+ вроде б mxl читался как текстовый документ
#18 by Dmitriy_Kolesnikov
если открыть MXL блокнотом, то текстовый файл это напоминает слабо.
#19 by Wobland
хм.. попробовал. на 8.1 вроде по-человечьи было
#20 by Wobland
ага MOXCEL {"#","",1,1,"#","Язык по умолчанию","Язык по умолчанию"}, {128,72}, {1,1, {4,0, {0},1,1,3,f527dc88-1d39-40b3-bcbb-d98b690ead68,0},0},0, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0},0,2,24,0,0,10,0, {16,1, {1,1, {"#","Метаданные"} } },1, {16,1, {1,1,
#21 by ДенисЧ
переходи на 8.2...
#22 by smitru
1. Устанавливаешь "виртуальный принтер в PDF" 2. Под 1Ской направляешь на печать свой XML-файл на этот виртуальнй принтер. Далее наслаждаешься жизнью :-)
#23 by Dmitriy_Kolesnikov
низззя. Конфигурация слишком доработанная, риск некорректной работы на новой платформе велик. Простои недопустимы. см.
#24 by smitru
ну ё-ё-ё... Этот метод отсутствует а контексте ТабличныйДокумент.Напечатать А тебе говорят "поставь драйвер", сохраняешь выгрузку через ТабличныйДокумент.Записать и затем уже на него посылай напечатать.. общей функцией, а не через контекст
#25 by Dmitriy_Kolesnikov
извини, не догоняю. Что за "общая функция"? 8.1 не знает общей функции Напечатать. Только как метод объектов ТабличныйДокумент, ГеографическаяСхема.
#26 by Галахад
Подключение не из 1С?
#27 by Dmitriy_Kolesnikov
подключение из javascript
#28 by Галахад
Если конфигурацию можно править, то добавить процедуру в общий модуль: Процедура СохранитьВЭксель(ТабДок, ИмяФайлаЭксель) Экспорт ТабДок.Записать(ИмяФайлаЭксель, "xls"); КонецПроцедуры
#29 by Dmitriy_Kolesnikov
а разве в общем модуле не действуют ограничения, описанные в справке? см. : При работе на сервере или через com-соединение использует только файлы форматов mxl и txt.
#30 by Dmitriy_Kolesnikov
Короче, решил задачу очень некрасиво. 1. Поставил платформу 8.3. 2. В ней создал чистую конфу с единственной функцией для конвертации MXL в PDF: Функция СохранитьМХЛвПДФ(ПутьККаталогу) Экспорт    Если ПутьККаталогу = "" или ПутьККаталогу = Неопределено Тогда        Возврат ложь;    КонецЕсли;        ИмяZIPФайла = ПолучитьИмяВременногоФайла(".zip");    ФайлАрхива = Новый ЗаписьZipФайла(ИмяZIPФайла, , ,                                  МетодСжатияZIP.Сжатие,                                  УровеньСжатияZIP.Максимальный);    МассивФайлов = НайтиФайлы(ПутьККаталогу, "*.mxl");    Для каждого Файл из МассивФайлов Цикл        Попытка            Таб = новый ТабличныйДокумент;            Таб.Прочитать(Файл.ПолноеИмя);            ИмяПДФФайла = ПутьККаталогу + Файл.ИмяБезРасширения + ".pdf";            Таб.Записать(ИмяПДФФайла, ТипФайлаТабличногоДокумента.PDF);        Исключение            #Если ТонкийКлиент ИЛИ МобильноеПриложениеКлиент Тогда            Сообщить(ОписаниеОшибки);            #Иначе            ЗаписьЖурналаРегистрации(ОписаниеОшибки, УровеньЖурналаРегистрации.Ошибка, , ,"Уведомление");            #Конецесли        КонецПопытки;    КонецЦикла;    // архивирование    Попытка        //ФайлАрхива.Добавить(ПутьККаталогу + "*.pdf",        //                РежимСохраненияПутейZIP.НеСохранятьПути,        //                РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);        ФайлАрхива.Добавить(ПутьККаталогу + "*.pdf",                РежимСохраненияПутейZIP.НеСохранятьПути,                РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);        ФайлАрхива.Записать;    Исключение        #Если ТонкийКлиент ИЛИ МобильноеПриложениеКлиент Тогда        Сообщить(ОписаниеОшибки);        #Иначе        ЗаписьЖурналаРегистрации(ОписаниеОшибки, УровеньЖурналаРегистрации.Ошибка, , ,"Уведомление");        #Конецесли        Возврат ложь;    КонецПопытки;        // очистка - удаление временных файлов    Попытка        УдалитьФайлы(ПутьККаталогу);    Исключение        //Сообщить(ОписаниеОшибки);        #Если ТонкийКлиент ИЛИ МобильноеПриложениеКлиент Тогда        Сообщить(ОписаниеОшибки);        #Иначе        ЗаписьЖурналаРегистрации(ОписаниеОшибки, УровеньЖурналаРегистрации.Ошибка, , ,"Уведомление");        #Конецесли    КонецПопытки;        Возврат ИмяZIPФайла; КонецФункции === Одно плохо: файлы PDF получаются по 2-4 мегабайта каждый. Как бы это пофиксить?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям