8.х OpenOffice через COM

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем fedor40, 3 фев 2008.

  1. TopicStarter Overlay
    fedor40
    Offline

    fedor40 Опытный в 1С

    Регистрация:
    15 дек 2007
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Как подключиться через COM к ОО 2.3. И какими методами там работать? У кого-нибудь есть пример?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    Перем Аргументы;  // Массив аргументов для создания приложения
    
    СервисОО = Новый COMОбъект("com.sun.star.ServiceManager"); // Создаём доступ
    Десктоп = СервисОО.createInstance("com.sun.star.frame.Desktop"); // Создаём десктоп
    // Создаем документ приложения Writer
    Документ = Десктоп.LoadComponentFromURL("private:factory/swriter", "_blank", 0, Аргументы); 
    
    
    Подробно можно почитать по этой ссылке (1,5Mb), начиная с главы Введение в OpenOffice.org API, если знаком с любым яхыком программирования - будет очень просто все.
  3. TopicStarter Overlay
    fedor40
    Offline

    fedor40 Опытный в 1С

    Регистрация:
    15 дек 2007
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Спасибо. А можно простой пример. Перебор строк и получение значений из нескольких колонок? Заранее благодарен.
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Я так понимаю, разговор про Calc уже? :)
    Вот, примерно так можно:
    Код:
    Листы = Документ.getSheets();
    Лист = Листы.getByIndex(0);
    Для Позиция = 0 По 10 Цикл
    Лист.getCellByPosition(0, Позиция).value = 2;
    КонецЦикла;
    
    
    
  5. minute
    Offline

    minute

    Регистрация:
    28 мар 2007
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Такой вопрос: а как получить доступ к уже открытому документу Calc?
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Т.е. подключиться к процессу?
    Методологически неправильно так делать.
  7. minute
    Offline

    minute

    Регистрация:
    28 мар 2007
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Почему? В Exel'е, например, с этим вообще никаких проблем:
    Код:
    ехель=СоздатьОбъект("Excel.Application");
    //взять контрагента и поместить его в поле комментарий  
    Если флНестандарт=0 Тогда
    Ячейка=ехель.Cells(10,2);
    иначе
    Ячейка=ехель.Cells(15,2);
    КонецЕсли;
    
    
    
    
    В ячейке будет содержаться текст открытого в данный момент документа Excel, с активного листа.
    А в Open Office? :unsure:
  8. Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    А как можно сделать проверку орфографии в УТ для почтовых сообщений?
    Еще у меня при запуске вот такого кода:
    Код:
    FileName= "file:///C:/Documents and Settings\Саша\Рабочий стол\1.ods";	
    
    СервисОО = Новый COMОбъект("com.sun.star.ServiceManager"); 
    Десктоп = СервисОО.createInstance("com.sun.star.frame.Desktop"); 
    
    :unsure: Документ = Десктоп.LoadComponentFromURL(FileName, "_blank", 0, Аргументы);
    
    Листы = Документ.getSheets();
    Лист = Листы.getByIndex(0);
    Для Позиция = 0 По 10 Цикл
    Лист.getCellByPosition(0, Позиция).value = 2;
    
    Вот в этом месте выдает вот такую ошибку:
    {Обработка.BioЗагрузкаXML.Форма.Форма1(246)}: Ошибка при вызове метода контекста (LoadComponentFromURL): Типы не совпадают (1)
    Документ = Десктоп.LoadComponentFromURL(FileName, "_blank", 0, Аргументы);

    На самом деле это написано вот так: "file:///C:/Documents and Settings\Саша\Рабочий стол\1.ods"
    При выделение здесь в код почему то неправильно показывает.
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Что-то не так с именем файла :)
  10. Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Ну я в общем то тоже так подумал. Ну что же тогда может быть?
    Там есть что то типо функций ConvertToURL и ConvertToURL.
    Еще GetPathSeparator() но я не знаю как это использовать из 1С и в обще нужно ли это?
    Потом я попробовал использовать такой путь "file:///C:/1.ods" но это не помогло.
    Что в обще такое private:factory/scalc?
  11. Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Как сделать Нужно сделать массив аргументов для создания приложения? Вот так не получается:

    Код:
    СервисОО = Новый COMОбъект("com.sun.star.ServiceManager"); 
    Десктоп = СервисОО.createInstance("com.sun.star.frame.Desktop"); 
    a=  СервисОО.createInstance("com.sun.star.beans.PropertyValue");
    Документ=Десктоп.LoadComponentFromURL("file:///c:/1.ods","_blank",0, a);
    
    Вот в этих: http://community.i-rs.ru/index.php/topic,9...2.html#msg59152 http://community.i-rs.ru/index.php?topic=8...w;topicseen#new
    темах написано что его можно создать с помощью MSScriptControl.
  12. Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Можно этот массив создать с помощью 1С?
    Может можно создать проверку орфографии с помощью самой 1С? В ней ведь есть вроде база слов?
  13. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    :unsure:
    Я не успеваю за тобой, автор :)
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Подниму тему.

    интересует каким образом запустить Сalc невидимым?
    каким образом добавить "hidden" True в массив аргументов запуска?

    Scr = Новый COMОбъект("MSScriptControl.ScriptControl");
    Scr.language = "javascript";
    Scr.eval("Arr = new Array()");
    Scr.AddObject("ServiceManager", СервисОО);
    Array = Scr.eval("Arr");

    Array[0].Name = "Hidden";
    Array[0].Value = Истина;

    не робит

Поделиться этой страницей