Имя: Пароль:
1C
1С v8
Поиск в open office без открытия его
0 Meskon
 
18.03.14
16:20
Добрый день. Столкнулся с проблемой. Нужно найти текст в опен офисе. Делаю так:

    Приложение = Новый COMОбъект("com.sun.star.ServiceManager");
    Desktop = Приложение.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", Приложение);
    URL = СтрЗаменить(ИмяФайлаШаблона," ","%20");
    URL = СтрЗаменить(URL,"\","/");
    URL ="file://localhost/" + URL;
    
    Документ = Desktop.LoadComponentFromURL(URL, "_blank", 0, Args);             
    
    Поиск = Документ.createSearchDescriptor();
    Поиск.searchString="Вася";
    oFound = Документ.findFirst(Поиск);

На строчке Документ = Desktop.LoadComponentFromURL(URL, "_blank", 0, Args); открывается документ. Можно как то поискать не показывая при этом документ?
1 fvadim
 
18.03.14
16:29
попробуй в args запихать MakePropertyValue("Hidden", Истина)
2 Meskon
 
18.03.14
17:37
Туплю. Как это сделать?
3 fvadim
 
18.03.14
17:54
наврал, не глядя скопировал
как-то так

Args = Scr.Eval("Args");  
scr.AddObject("OpenOffice", ServiceManager);
scr.eval("args[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
scr.eval("args[0].Name='Hidden'");
scr.eval("args[0].Value=true");

v8: OpenOffice + 1C
4 Meskon
 
18.03.14
20:50
Сделал так:

    Desktop = Приложение.createInstance("com.sun.star.frame.Desktop");
    Scr = Новый COMОбъект("MSScriptControl.ScriptControl");
    Scr.Language="javascript";
    Scr.Eval("Args=new Array()");
    Args = Scr.Eval("Args");  
    scr.AddObject("OpenOffice", Приложение);
    scr.eval("args[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
    scr.eval("args[0].Name='Hidden'");
    scr.eval("args[0].Value=true");
    
    URL = СтрЗаменить(ИмяФайлаШаблона," ","%20");
    URL = СтрЗаменить(URL,"\","/");
    URL ="file://localhost/" + URL;
    
    Документ = Desktop.LoadComponentFromURL(URL, "_blank", 0, Args);             
    
    Поиск = Документ.createSearchDescriptor();

Вылазит ошибка на строке
scr.eval("args[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
Произошла исключительная ситуация (Ошибка выполнения Microsoft JScript): 'args' - определение отсутствует
В чем может быть проблема?
5 mikeA
 
18.03.14
21:41
6 Meskon
 
19.03.14
09:39
Спасибо, помогло. Вот конечный вариант:

    Desktop = Приложение.createInstance("com.sun.star.frame.Desktop");
    propHidden= Приложение.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    
    // Устанавливаем параметр скрытый режим
    propHidden.Name="Hidden";
    propHidden.Value=True;
    
    // Добавляем эту структуру в массив
    Массив= Новый Массив;
    Массив.Добавить(propHidden);
    
    // Инициализируем этим массивом безопасный массив для COM
    Attributes= Новый COMSafeArray(Массив, "VT_VARIANT", 1);
    
    URL = СтрЗаменить(ИмяФайлаШаблона," ","%20");
    URL = СтрЗаменить(URL,"\","/");
    URL ="file://localhost/" + URL;
    
    // Открываем файл не открывая окна приложения
    Документ = Desktop.LoadComponentFromURL(URL, "_blank", 0, Attributes);             
    
    Поиск = Документ.createSearchDescriptor();
    Поиск.searchString="Вася";
    oFound = Документ.findFirst(Поиск);