|
Конвертировать MXL в PDF (XLS...) | ☑ | ||
---|---|---|---|---|
0
Dmitriy_
Kolesnikov 13.02.13
✎
08:16
|
Доброе утро!
Есть такая задача: подключаюсь к 8.1 через ВнешнееСоединение, формирую ТабличныйДокумент (счёт, акт, сф...) и выгружаю. Выгрузить из 8.1 можно только в txt и mxl, другие форматы для ТабличныйДокумент.Записать() в режиме внешнего соединения недоступны. Вопрос в том, как дальше этот полученный MXL преобразовать в другой формат (в идеале pdf, но пойдёт любой другой). Что уже обсуждалось и не подошло: ТабличныйДокумент.Напечатать() - не работает в режиме внешнего соединения Йоксель - не понимает на входе MXL, сохранённый из 8.1 с помощью ТабличныйДокумент.Записать(<Имя файла>, ТипФайлаТабличногоДокумента.MXL или MXL7) Какие ещё есть варианты? Исходим из того, что есть готовый ТабличныйДокумент. |
|||
1
Wobland
13.02.13
✎
08:18
|
обработка для "в хтмл" подойдёт?
|
|||
2
Balabass
13.02.13
✎
08:19
|
пачать в ПДФ не предлагать?
|
|||
3
Dmitriy_
Kolesnikov 13.02.13
✎
08:20
|
(1) как MXL конвертировать в HTML?
Напрямую выгрузить в HTML нельзя: ТабличныйДокумент (SpreadsheetDocument) Записать (Write) Синтаксис: Записать(<Имя файла>, <Тип файла таблицы>) Параметры: <Имя файла> (обязательный) Тип: Строка. Имя файла, в котором сохраняется табличный документ. <Тип файла таблицы> (необязательный) Тип: ТипФайлаТабличногоДокумента. Формат, в котором будет сохранен табличный документ. Значение по умолчанию: MXL Описание: Записывает табличный документ в файл. Примечание: При работе на сервере или через com-соединение использует только файлы форматов mxl и txt. |
|||
4
Dmitriy_
Kolesnikov 13.02.13
✎
08:20
|
(2) см. (0) - метод Напечатать() недоступен в режиме внешнегоСоединения.
|
|||
5
Wobland
13.02.13
✎
08:21
|
(3) обработкой
|
|||
6
Balabass
13.02.13
✎
08:21
|
Передать разве нельзя табличный документ дальше?
|
|||
7
Wobland
13.02.13
✎
08:22
|
(6) у меня была похожая беда (регзадание на сервере). куда передать, когда результат должен сам лежать готовый? ;)
|
|||
8
Dmitriy_
Kolesnikov 13.02.13
✎
08:23
|
(5) обработкой - это интересно. Поделитесь обработкой?
(6) куда передать? |
|||
9
Wobland
13.02.13
✎
08:25
|
(8) "распарсивание" формата mxl. куда тебе? //её ещё в бардачке найти надо
|
|||
10
Dmitriy_
Kolesnikov 13.02.13
✎
08:27
|
||||
11
rphosts
13.02.13
✎
08:35
|
(9) нашёл?
|
|||
12
Wobland
13.02.13
✎
08:38
|
плин, извините, коллеги, не вижу. есть ещё одно место, но в него попасть сложно - материнка померла ;)
|
|||
13
Dmitriy_
Kolesnikov 13.02.13
✎
08:45
|
:(
|
|||
14
Dmitriy_
Kolesnikov 13.02.13
✎
08:47
|
Wobland, общую идею не помните? Может намекнёте, а дальше сам напишу и поделюсь со всеми.
|
|||
15
Нуф-Нуф
13.02.13
✎
08:52
|
Подключиться к базе. Сохранить в мхл. Из текущей базы открыть сохраненный мхл. Передам мать в нужном формате
|
|||
16
Wobland
13.02.13
✎
08:53
|
(14) там был жестокий разбор формата. я б не рискнул
|
|||
17
Wobland
13.02.13
✎
08:55
|
+(16) вроде б mxl читался как текстовый документ
|
|||
18
Dmitriy_
Kolesnikov 13.02.13
✎
09:32
|
(17) если открыть MXL блокнотом, то текстовый файл это напоминает слабо.
|
|||
19
Wobland
13.02.13
✎
09:35
|
(18) хм.. попробовал. на 8.1 вроде по-человечьи было
|
|||
20
Wobland
13.02.13
✎
09:35
|
(19) ага
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
ДенисЧ
13.02.13
✎
09:36
|
переходи на 8.2...
|
|||
22
smitru
13.02.13
✎
09:48
|
(0)
1. Устанавливаешь "виртуальный принтер в PDF" 2. Под 1Ской направляешь на печать свой XML-файл на этот виртуальнй принтер. Далее наслаждаешься жизнью :-) |
|||
23
Dmitriy_
Kolesnikov 13.02.13
✎
09:54
|
(21) низззя. Конфигурация слишком доработанная, риск некорректной работы на новой платформе велик. Простои недопустимы.
(22) см. (4) |
|||
24
smitru
13.02.13
✎
10:05
|
(23) ну ё-ё-ё...
Этот метод отсутствует а контексте ТабличныйДокумент.Напечатать() А тебе говорят "поставь драйвер", сохраняешь выгрузку через ТабличныйДокумент.Записать() и затем уже на него посылай напечатать.. общей функцией, а не через контекст |
|||
25
Dmitriy_
Kolesnikov 13.02.13
✎
10:43
|
(24) извини, не догоняю.
Что за "общая функция"? 8.1 не знает общей функции Напечатать. Только как метод объектов ТабличныйДокумент, ГеографическаяСхема. |
|||
26
Галахад
гуру
13.02.13
✎
10:46
|
(0) Подключение не из 1С?
|
|||
27
Dmitriy_
Kolesnikov 13.02.13
✎
10:57
|
(26) подключение из javascript
|
|||
28
Галахад
гуру
13.02.13
✎
11:33
|
(27) Если конфигурацию можно править, то добавить процедуру в общий модуль:
Процедура СохранитьВЭксель(ТабДок, ИмяФайлаЭксель) Экспорт ТабДок.Записать(ИмяФайлаЭксель, "xls"); КонецПроцедуры |
|||
29
Dmitriy_
Kolesnikov 13.02.13
✎
11:52
|
(28) а разве в общем модуле не действуют ограничения, описанные в справке?
см. (3): При работе на сервере или через com-соединение использует только файлы форматов mxl и txt. |
|||
30
Dmitriy_
Kolesnikov 13.02.13
✎
16:30
|
Короче, решил задачу очень некрасиво.
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 мегабайта каждый. Как бы это пофиксить? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |