gifts2017

Работа 1С с шаблоном OpenOffice.org

Опубликовал Иван (iones) в раздел Программирование - Практика программирования

Данная обработка заменяет по параметру в шаблоне значениями. Шаблон средствами OpenOffice.org.

В последнее время все пытаются уйти от нелегального софта, в том числе от полюбившегося всеми МС Офис от компании Майкрософт. Некоторые решают перейти на бесплатный, например OpenOffice.org.

Вот для этого и была написана данная обработка-пример.

 

Код:

 

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);

Попытка
FileNameSh = СокрЛП(ПутьКФайлу);
URL = СтрЗаменить(FileNameSh," ","%20");
URL = СтрЗаменить(URL,"\","/");
URL ="file://localhost/" + URL;

OpenOffice = Desktop.LoadComponentFromURL(URL, "_blank", 0, Args);

Исключение
Сообщить("Ошибка при попытке создать объект ", СтатусСообщения.Внимание);
Возврат;
КонецПопытки;

Replace =OpenOffice.CreateReplaceDescriptor();

Для Каждого СтрокаТЧ Из ТабличноеПоле Цикл
Replace.SearchString = "["+СтрокаТЧ.Параметр+"]";
Replace.ReplaceString = СтрокаТЧ.Значение;
OpenOffice.ReplaceAll(Replace);
КонецЦикла;

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Обработка
.epf 13,29Kb
14.12.11
81
.epf 13,29Kb 81 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. nissal 19.12.11 12:33
Очень хорошо, что появился образец - я как-то хотел с наскока овладеть ООО, но он не дался :) С примером как-то не так страшно :)

Единственно, я бы усугубил вот здесь:
Исключение
Сообщить("Ошибка при попытке создать объект " + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки; 
Спасибо!
2. Александр Кузин (sashocq) 17.04.12 09:35
В БСП есть хороший и полный пример работы с обоими офисами. Я для себя оттуда взял алгоритм.
3. Иван Федоров (mqlochink) 03.08.12 07:34
Спасибо за разработку, но она у меня не запускается, не подскажите почему она не запускается? пишет {Форма.Форма.Форма(7)}: Ошибка при вызове конструктора (COMОбъект)
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
по причине:
Недопустимая строка с указанием класса

OpenOffice установлен (версия 3.4)
4. Иван (iones) 07.09.12 10:44
(3) mqlochink, попробуйте переустановить OO.
Дело в том, что данный метод 100% рабочий, и в данный момент используется в компании для заполнения шаблонов договоров.
5. Иван (iones) 07.09.12 11:27
(1) nissal, данная обработка является примером. А дальше уже каждый сам решает что и как усугублять =))
6. Максим Коломиец (shamahn) 18.10.13 01:01
Все отлично, но
Replace =OpenOffice.CreateReplaceDescriptor();

у меня, по крайней мере, вызывает открытие приложения ОО. Как бы этого избежать? никто не знает?
7. Валентин Елфимов (ratinc) 21.11.14 01:00
COMОбъект("MSScriptControl.ScriptControl");

На сервере 2008r2 не возможно использовать.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа