Имя: Пароль:
1C
 
Можно ли как-то встроить LibreOffice на управляемую форму в поле HTML-документа?
0 _stay true_
 
04.08.16
09:21
День добрый!

Задача: вывести в тонком клиенте на управляемую форму таблицу EXCEL для отображения. Перечитал кучу статей, тем и мануалов, по Мелкомягкому экселю нашел решение: в поле html-документа на форме выводим код:

"<HTML><OBJECT id = ExcelLook classid=CLSID:00024500-0000-0000-C000-000000000046 width=""100%"" height=""100%"">"

А после, в процедурке "подгрузки" на клиенте файла делаем следующее:

ЭлементВнКомп = Элементы.Эксель.Документ.getElementById("ExcelLook");
ЭлементВнКомп.Src = ПутьКФайлу;

Вопрос: может, кто проделывал что-то подобное с LibreOffice? Если да - поделитесь кусочком своей безграничной мудрости:)

Заранее спасибо!
1 Cyberhawk
 
04.08.16
09:23
Встрой лучше туда Windows
2 _stay true_
 
04.08.16
09:23
(1) Внук Петросяна, не меньше:)
3 Kandellaster
 
04.08.16
09:24
если у либры есть ActiveX то тогда можно влепить туда
4 _stay true_
 
04.08.16
09:25
(3) Вот в этом и вопрос: как))) Инфы нигде не нарыл, думал, может у кого опыт есть
5 DrZombi
 
гуру
04.08.16
09:26
(0) Элемент по "getElementById" может появиться не сразу. У меня бывало, что спустя пару секунд.
Смотря как быстро прогрузится страница
6 Kandellaster
 
04.08.16
09:27
(4) тот же способ только CLSID надо узнать при условии что у либры таки есть активХ
7 _stay true_
 
04.08.16
09:32
(5) Засунул в обработчик ожидания с задержкой 5 секунд - пока всё работает.

У Либры есть ActiveX, https://help.libreoffice.org/Common/ActiveX_Control_to_Display_Documents_in_Internet_Explorer/ru

Вот как его только прикрутить к 1С)))
8 sikuda
 
04.08.16
09:43
Сам немного этим баловался, но не критично
http://joliclic.free.fr/html/object-tag/en/object-application.html
http://catalog.mista.ru/public/235751/
9 _stay true_
 
04.08.16
09:49
(8) в href и дата vj;yj засунуть что-то вроде file//ПутьКФайлу?

<object type="application/vnd.ms-excel"
        data="data/test.xls" width="300" height="200">
  alt : <a href="data/test.xls">test.xls</a>
</object>

?
10 _stay true_
 
04.08.16
10:19
Ап)))
11 _stay true_
 
04.08.16
10:58
В общем, забил я на эту хрень, для просто просмотра проще xls в html программно по комке перегонять. Есть какой пример взаимодействия с LibreOffice по ком? Подключение, открытие файла, сохранение в html?
12 Garykom
 
гуру
04.08.16
11:25
(11) У тя в поле html документа js работает?
13 Garykom
 
гуру
04.08.16
11:31
(12)+ Если работает и хорошо то https://github.com/SheetJS/js-xlsx и делай что хочешь с XLS/XLSX/ODT хочешь выводи, хочешь свой "процессор таблиц" пиши ))
14 _stay true_
 
04.08.16
16:57
Таки почти разобрался с этим делом, конвертацией XLS в HTML с помощью LibreOffice. Остался последний штришок... Вот процедура:

// Сравнивает 2 файла (txt doc doc odt) с помощью MS Office или OpenOffice
Процедура СравнитьФайлы(ПутьКФайлу) Экспорт
            
    Попытка
        
        // Открыть OpenOffice
        ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
        Reflection = ServiceManager.createInstance("com.sun.star.reflection.CoreReflection");
        Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
        Dispatcher = ServiceManager.createInstance("com.sun.star.frame.DispatchHelper");
        
        // Открыть документ OpenOffice
        Args = Новый COMSafeArray("VT_DISPATCH", 1);
        OOДокумент = Desktop.loadComponentFromURL(ПреобразоватьВURL(ПутьКФайлу), "_blank", 0, Args);
        
        frame = Desktop.getCurrentFrame();
        
        НастройкиСохранения = Новый COMSafeArray("VT_VARIANT", 1);
        PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
        PropertyValue.Name = "FilterName";
        PropertyValue.Value = "calc_html_Export";
        НастройкиСохранения.SetValue(0, PropertyValue);
        ПутьКHTML = ПреобразоватьВURL("D:\test.html");
        OOДокумент.storeToURL(ПутьКHTML, НастройкиСохранения); // сохранили HTML файл
        OOДокумент.close(-1);
        OOДокумент = Неопределено;
        
        
        
        
    Исключение
        Инфо = ИнформацияОбОшибке();
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ПодробноеПредставлениеОшибки(Инфо));
    КонецПопытки;
    
КонецПроцедуры    
&НаКлиенте
// Функция преобразует Windows имя файла в URL OpenOffice
Функция ПреобразоватьВURL(ИмяФайла)
    Возврат "file:///" + СтрЗаменить(ИмяФайла, "\", "/");
КонецФункции



И вот на строчке

// Сравнивает 2 файла (txt doc doc odt) с помощью MS Office или OpenOffice
Процедура СравнитьФайлы(ПутьКФайлу) Экспорт
            
    Попытка
        
        // Открыть OpenOffice
        ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
        Reflection = ServiceManager.createInstance("com.sun.star.reflection.CoreReflection");
        Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
        Dispatcher = ServiceManager.createInstance("com.sun.star.frame.DispatchHelper");
        
        // Открыть документ OpenOffice
        Args = Новый COMSafeArray("VT_DISPATCH", 1);
        OOДокумент = Desktop.loadComponentFromURL(ПреобразоватьВURL(ПутьКФайлу), "_blank", 0, Args);
        
        frame = Desktop.getCurrentFrame();
        
        НастройкиСохранения = Новый COMSafeArray("VT_VARIANT", 1);
        PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
        PropertyValue.Name = "FilterName";
        PropertyValue.Value = "calc_html_Export";
        НастройкиСохранения.SetValue(0, PropertyValue);
        ПутьКHTML = ПреобразоватьВURL("D:\test.html");
        OOДокумент.storeToURL(ПутьКHTML, НастройкиСохранения); // сохранили PDF файл
        OOДокумент.close(-1);
        OOДокумент = Неопределено;
        
        
        
        
    Исключение
        Инфо = ИнформацияОбОшибке();
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ПодробноеПредставлениеОшибки(Инфо));
    КонецПопытки;
    
КонецПроцедуры    
&НаКлиенте
// Функция преобразует Windows имя файла в URL OpenOffice
Функция ПреобразоватьВURL(ИмяФайла)
    Возврат "file:///" + СтрЗаменить(ИмяФайла, "\", "/");
КонецФункции

И на строке
        OOДокумент.storeToURL(ПутьКHTML, НастройкиСохранения); // сохранили HTML файл

Получаю такую ошибку:

{ВнешняяОбработка.ТестЗапускаПриложений.Форма.Форма.Форма(40)}: Ошибка при вызове метода контекста (storeToURL)
    OOДокумент.storeToURL(ПутьКHTML, НастройкиСохранения);
по причине:
Произошла исключительная ситуация ([automation bridge] ): com.sun.star.io.IOException: SfxBaseModel::impl_store <file:///D:/test.html> failed: 0x81a


Кто сталкивался - помогите))
15 _stay true_
 
04.08.16
17:04
Извиняюсь, случайно задублировал код((
16 _stay true_
 
04.08.16
17:13
Я так понял, неправильно значение фильтра указал. пробовал разные комбинации с html, но нигде не нашёл инфы. В PDF есть экспорт, в html - НЕТ((
17 Cyberhawk
 
04.08.16
19:15
(2) Прошу меня извинить, хотел разрядить обстановку в этой атмосфере безысходности и тщетности найти работющее решение
18 Garykom
 
гуру
04.08.16
19:24
Меня искренне радует желания проводить операции на гландах через разные проходы в т.ч. задний.

Точнее тренировки в этом, но почему не удовлетворяет обычный ТабДок?

Или отдельная работа в Екселя/ЛибреОфиса/ГуглеОфиса? Зачем это засовывать в тонкого клиента внутрь 1С?
19 Йохохо
 
04.08.16
19:31
20 _stay true_
 
05.08.16
13:22
(19) Не заработало(((

Проблема решена установкой плагина в GoogleChrome и двумя строчками кода.
Основная теорема систематики: Новые системы плодят новые проблемы.