|  19.02.2007, 19:19 | #1 | 
| Участник | Axapta+OpenOffice 
			
			Добрый день! Вот, как-то на досуге решил посмотреть, а возможно ли их подружить (знаю что раньше нельзя было, но с тех пор многое что изменилось). Нашел код, для создания экземпляра и создания нового документа (в частности OpenOffice.org Calc) и поробывал адаптировать под Axaptу. X++: static void Job2(Args _args) { COM OpenOffice; COM scr; COM DeskTop; COM Document; COM ; //Создание экземпляра OpenOffice.org OpenOffice = new Com("com.sun.star.ServiceManager"); DeskTop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop"); // В вариантном массиве содержатся опции открытия документа, // в виде пар название опции – значение опции. // Например, если не нужно показывать окно OpenOffice.org, // можно передать данной функции массив, содержащий пару: Hidden (название опции) – // true(значение опции). scr=new Com("MSScriptControl.ScriptControl"); scr.language("javascript"); scr.eval("Массив=new Array()"); scr.AddObject("OpenOffice",OpenOffice); scr.eval("Массив[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')"); scr.eval("Массив[0].Name='Hidden'"); scr.eval("Массив[0].Value=false"); =scr.eval("Массив"); //Создание документа Document = DeskTop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, ); } Указанный аргумент [retval] должен быть последним параметром в вызове метода "LoadComponentFromURL". Может кто подскажет, что не так? Заранее спасибо. | 
|  | 
|  19.02.2007, 21:24 | #2 | 
| Участник | 
			
			может приведете код, который вы портировали?  можете его портировать на VBS или JS? не может быть что вы перепутали с количеством аргументов? нет ли в классе COMVariant статического метода, который создает нужный вам массив? | 
|  | 
|  20.02.2007, 12:50 | #3 | 
| Участник | 
			
			Вот два варианта кода один для  1С: Код: OpenOffice = СоздатьОбъект("com.sun.star.ServiceManager");
        
scr=СоздатьОбъект("MSScriptControl.ScriptControl");
   
scr.language="javascript";
scr.eval("Массив=new Array()");
Массив=scr.eval("Массив");
scr.AddObject("OpenOffice",OpenOffice);
scr.eval("Массив[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
scr.eval("Массив[0].Name='Hidden'");
scr.eval("Массив[0].Value=false");
   
DeskTop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop");  
   
Document = DeskTop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, Массив);Код: ServiceManager = CreateOleObject("com.sun.star.ServiceManager");
	
Desktop = ServiceManager.OleFunction("createInstance","com.sun.star.frame.Desktop");
Document = Desktop.OleFunction("LoadComponentFromURL", "private:factory/scalc", "_blank", 0, VariantArray ); | 
|  | 
|  20.02.2007, 16:50 | #4 | 
| Участник | 
			
			Получилось... X++: static void Job2(Args _args) { COM OpenOffice; COM DeskTop; COM Document; COMVariant arg; Array arr = new Array(Types::String); //Создание экземпляра OpenOffice.org OpenOffice = new Com("com.sun.star.ServiceManager"); DeskTop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop"); // create and initialize a COMVariant object arg = COMVariant::createFromArray(arr); //Создание документа Document = DeskTop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, arg); } | 
|  | |
| За это сообщение автора поблагодарили: belugin (14), _AnK_ (1). | |
| Теги | 
| openoffice, интеграция, экспорт | 
|  | 
| 
 |