Имя: Пароль:
1C
 
OpenOffice + 1C8, открытие и печать файла, COMSafeArray. Как?
0 vs84
 
11.01.08
11:57
есть код, который работает

   scr = Новый COMОбъект("MSScriptControl.ScriptControl");
   scr.language = "javascript";
   scr.eval("Массив=new Array()");
   Массив = scr.eval("Массив");
   scr.AddCode("function SetItem(ind,val){Массив[ind]=val}");    
   
   ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");  
   scr.AddObject("ServiceManager",ServiceManager);
   
   StarDesktop = ServiceManager.createInstance( "com.sun.star.frame.Desktop" );
   
   Document = StarDesktop.LoadComponentFromURL(ПреобразоватьВURL(СокрЛП(путь)), "_blank", 0, Массив);


Но в 8-ке же есть ComSafeArray. Кто нибуди его использовал? Если да, покажите плиз :)
1 ЫЫЫЫ
 
11.01.08
12:07
ПараметрыПечати         = Новый COMSafeArray("VT_VARIANT", 2);
   ПараметрыПечати.SetValue(0, ПрисвоитьЗначениеСвойству(ServiceManager, "Name", "<" + ИмяПринтера + ">"));
   ПараметрыПечати.SetValue(1, ПрисвоитьЗначениеСвойству(ServiceManager, "Wait", Истина));
2 vs84
 
11.01.08
12:15
ПрисвоитьЗначениеСвойству(ServiceManager, "Wait", Истина) это что?
3 vs84
 
14.01.08
12:24
может кому пригодиться

   ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");  
   
   StarDesktop = ServiceManager.createInstance( "com.sun.star.frame.Desktop" );
   
   ПараметрыОткрытия         = Новый COMSafeArray("VT_VARIANT", 1);
   ПараметрыОткрытия.SetValue(0, ПрисвоитьЗначениеСвойству(ServiceManager, "Hidden", Истина));
   Document = StarDesktop.LoadComponentFromURL(ПреобразоватьВURL(СокрЛП(ФайлПечатнойФормы)), "_blank", 0, ПараметрыОткрытия);
   
   ПараметрыПечати         = Новый COMSafeArray("VT_VARIANT", 2);
   ПараметрыПечати.SetValue(0, ПрисвоитьЗначениеСвойству(ServiceManager, "Hidden", Истина));
   ПараметрыПечати.SetValue(1, ПрисвоитьЗначениеСвойству(ServiceManager, "Wait", Истина));    
   
   Document.Print(ПараметрыПечати);
   
   Document.Close(Истина);
   
   StarDesktop.Terminate();    


Функция ПрисвоитьЗначениеСвойству(Объект, ИмяСвойства, ЗначениеСвойства)
   
   Свойства = Объект.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
   Свойства.Name = ИмяСвойства;
   Свойства.Value = ЗначениеСвойства;
   
   Возврат Свойства;
   
КонецФункции
4 smaharbA
 
14.01.08
12:42
фигня получится... разово пойдет, с многоразовым сомнения берут...
5 smaharbA
 
14.01.08
12:42
+(4) разово == параметр с одним значением свойств
6 dk
 
14.01.08
12:57
Можно поизвращаться с vbs:
Function MakePropertyValue(cName, uValue)
   Set oSM = CreateObject(""com.sun.star.ServiceManager"")    
   Set oPropertyValue = oSM.Bridge_GetStruct(""com.sun.star.beans.PropertyValue"")
   oPropertyValue.Name = cName
   oPropertyValue.Value = uValue
   Set MakePropertyValue = oPropertyValue
End Function
OpenOffice пример выгрузки в формат Excel (зарплата на карту Альфа-Банка)