|
1С + OpenOffice | ☑ | ||
---|---|---|---|---|
0
first_may
20.08.16
✎
20:49
|
Добрый вечер.
Подскажите пож, как сформировать печатную форму в OpenOffice, если макет записан как двоичные данные во внешнюю печатную форму. Создание объекта OpenOffice сделал Попытка ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager"); Reflection = ServiceManager.createInstance("com.sun.star.reflection.CoreReflection"); Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); Broadcaster = ServiceManager.createInstance("com.sun.star.frame.GlobalEventBroadcaster"); Исключение Сообщить(ОписаниеОшибки(),"!"); КонецПопытки; Теперь надо открыть в нем шаблон и сделать замены, допустим #ДокументНомер#, на настоящее значение. Прошу помощи. |
|||
1
Поpyчик-4
22.08.16
✎
07:26
|
Открыть БСП и посмотреть, как сделано там.
|
|||
2
first_may
22.08.16
✎
09:38
|
(1) Открыть БСП - не совсем понял, что такое БСП?
|
|||
3
Gary417
22.08.16
✎
09:46
|
||||
4
Поpyчик-4
22.08.16
✎
10:19
|
(2) Что такое БСП - стаж 9 лет.
|
|||
5
first_may
22.08.16
✎
10:40
|
(4)
- век живи, век учись - посмотрел то, что там написано. Но возможно надо было мне сказать, что речь идет о Управление производственным предприятием, редакция 1.2 (1.2.19.1) на 1С:Предприятие 8.1 (8.1.15.14) |
|||
6
Gary417
22.08.16
✎
10:49
|
(5) < надо было мне сказать, что речь идет о >
хорошо хоть не о ПУБ 7.7 и не на 10 странице темы :)) |
|||
7
first_may
22.08.16
✎
14:12
|
Сам макет договора зашит как active document в саму обработку, и в Worde нормально открывается. А для Опен Офис так не пройдет, поэтому макет занес через бинарные данные. А вот как дальше можно сделать?
|
|||
8
Поpyчик-4
22.08.16
✎
14:56
|
(7) Так же, как и в БСП или в гугле ищи.
|
|||
9
first_may
22.08.16
✎
15:20
|
(8) да я и в БСП ничего не нашел :(..
|
|||
10
don_Rumata
22.08.16
✎
15:29
|
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); ИмяФайла=ОбработкаФайлаШаблона(ИмяФайлаШаблона); Если ИмяФайла = "" Тогда Возврат; КонецЕсли; //Таблица замен — таблица значений с колонками «Что» и «Чем» Стр=ТаблицаЗамен.Добавить(); Стр.Что="/*ДатаДоговора*/"; Стр.Чем=СсылкаНаОбъект.ДатаДоговора; Scr = Новый COMОбъект("MSScriptControl.ScriptControl"); Scr.Language="javascript"; Scr.Eval("Args=new Array()"); Args = Scr.Eval("Args"); Scr.AddObject("ServiceManager", ServiceManager); // Откроем шаблон ТекстовыйПроцессор = Desktop.LoadComponentFromURL(ПреобразоватьВURL(ИмяФайла), "_blank", 0, Args); // Заменяем ключевые поля на нужные значения Replace = ТекстовыйПроцессор.CreateReplaceDescriptor(); Для Каждого Стр из ТаблицаЗамен Цикл Replace.SearchString = Стр.Что; Replace.ReplaceString = Стр.Чем; ТекстовыйПроцессор.ReplaceAll(Replace); КонецЦикла; |
|||
11
first_may
22.08.16
✎
16:33
|
(10) спасибо...
ПреобразоватьВURL(ИмяФайла) - путь к файлу преобразуется, что бы опен офис понял? |
|||
12
don_Rumata
22.08.16
✎
16:35
|
(11) ага, именно
// Функция преобразует Windows имя файла в URL OpenOffice Функция ПреобразоватьВURL(ИмяФайла) Возврат "file:///" + СтрЗаменить(ИмяФайла, "\", "/"); КонецФункции |
|||
13
first_may
22.08.16
✎
16:38
|
(12) ясно, а если макет занес через бинарные данные, то я сначала сохраняю его во временном каталоге например, а затем читаю и заменяю в нем.
спасибо. |
|||
14
first_may
22.08.16
✎
17:04
|
(12) а как бороться:
{ВнешняяОбработка.ПечатьДоговораНаОборудование_Word(804)}: Ошибка при вызове метода контекста (LoadComponentFromURL): Произошла исключительная ситуация ([automation bridge] ): com.sun.star.lang.IllegalArgumentException: Unsupported URL <file://C:/Users/TS_BRK_Zharikov/AppData/Local/Temp/2/v8_1402_f6.odt>: "type detection failed" ТекстовыйПроцессор = Desktop.LoadComponentFromURL(ПреобразоватьВURL(ИмяВременногоФайла), "_blank", 0, Args); по причине: Произошла исключительная ситуация ([automation bridge] ): com.sun.star.lang.IllegalArgumentException: Unsupported URL <file://C:/Users/TS_BRK_Zharikov/AppData/Local/Temp/2/v8_1402_f6.odt>: "type detection failed" я сделал ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); ИмяВременногоФайла = СтрЗаменить(ИмяВременногоФайла, "tmp", "odt"); Макет = ПолучитьМакет("Макет"); Макет.Записать(ИмяВременногоФайла); а затем ТекстовыйПроцессор = Desktop.LoadComponentFromURL(ПреобразоватьВURL(ИмяВременногоФайла), "_blank", 0, Args); и вот ошибка |
|||
15
Йохохо
22.08.16
✎
17:46
|
(14) это хихи:ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
ИмяВременногоФайла = СтрЗаменить(ИмяВременногоФайла, "tmp", "odt"); ктрл+F1 на ПолучитьИмяВременногоФайла нажмите |
|||
16
first_may
23.08.16
✎
09:33
|
(15) прочитал, что можно сделать вот так
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("odt"); но ошибка от этого все равно не ушла, то есть ругается на ТекстовыйПроцессор = Desktop.LoadComponentFromURL(ПреобразоватьВURL(ИмяВременногоФайла), "_blank", 0, Args); хотя ПреобразоватьВURL(ИмяВременногоФайла) возвращает "file://C:/Users/Ivanov/AppData/Local/Temp/2/v8_D817_7d.odt" |
|||
17
don_Rumata
23.08.16
✎
09:50
|
(16) может че-то с правами не так? не временный файл читается?
|
|||
18
first_may
23.08.16
✎
10:47
|
(17) с правами все нормально, сделал так
функция ПреобразоватьВURL(FileName) __ = СтрЗаменить(FileName, " ", "%20"); __ = СтрЗаменить(__, "\", "/"); Возврат "file:/" + "/localhost/" + __; КонецФункции В итоге отчет сформировался как надо. Вроде пока все. Спасибо всем!!! |
|||
19
don_Rumata
23.08.16
✎
11:05
|
(18) "Однако!"(с) :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |