Имя: Пароль:
IT
Админ
Ошибка при обнаружении метода
0 Карась
 
25.07.12
11:37
Добрый день! Заранее прошу прощения за возможно детские вопросы.
У меня стоит задача заполнения документа в open office из формы документа 1с. Я создала кнопку "Печать", после чего начала описывать процедуру.
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
   
Desktop = ServiceManager.OleFunction("createInstance", "com.sun.star.frame.Desktop");
   
Док = Desktop.OleFunction("LoadComponentFromURL", "C:\\...", 0 );
На этом участке кода у меня система выдает ошибку:
"Desktop = ServiceManager.OleFunction("createInstance", "com.sun.star.frame.Desktop");"
В режиме отладки проверяла ServiceManager заполняется, а вот Desktop остается неопределенным. Пыталась исправить ошибку, но безуспешно. Надеюсь на Вашу помощь.Заранее спасибо!
1 vicof
 
25.07.12
11:38
Без фотки топлесс такие вопросы не решить.
2 Карась
 
25.07.12
11:38
Ой ошибку не дописала, вот она:"Метод объекта не обнаружен (OleFunction)
   Desktop = ServiceManager.OleFunction("createInstance", "com.sun.star.frame.Desktop");"
3 pumbaEO
 
25.07.12
11:41
фотка уже есть?
4 sash-ml
 
25.07.12
12:57
(2) ничего не выйдет, 1с такое не умеет,
5 EasyRider
 
25.07.12
13:10
А откуда известно,что у ServiceManager есть именно такой метод как OleFunction()?
6 ЧеловекДуши
 
25.07.12
13:24
Щас, автор выдаст - "Сама я не по 1С, да и не программист вообще, даже не программистка. А всего лишь системный администратор" :)

...Без фото, солнечный офис не будет работать...
7 Карась
 
25.07.12
13:33
EasyRider вот здесь вроде вычитала.
http://www.ishodniki.ru/art/art_progr/builder/236.html
А сама я начинающий программист, поэтому не пугайте пожалуйста)
8 Amra
 
25.07.12
13:35
(7) Никто не пугает, но без фото не взлетит)
9 Карась
 
25.07.12
13:38
Фото пока сделать не могу, не в офисе пока)
10 EasyRider
 
25.07.12
13:40
(7)в ссылке написано "OpenOffice.org базируется на компонентной модели UNO",а не на сом!Поэтому подозреваю,что после строк  ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager"); вы получаете в переменной ServiceManager не совсем то,что хотите.
11 Карась
 
25.07.12
13:43
То есть ошибка получается в
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
Неправильно определила ServiceManager?
12 Карась
 
25.07.12
13:43
точнее объект
13 EasyRider
 
25.07.12
13:47
думаю да
14 EasyRider
 
25.07.12
13:48
а теперь фото в студию!!!
15 Карась
 
25.07.12
13:50
Глупый вопрос, знаю, фото на каком моменте программы нужно(еще раз повторюсь, я еще маленький программист))
16 sash-ml
 
25.07.12
13:50
Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); а если так?
17 Карась
 
25.07.12
13:53
Оооо, ура теперь надо следующую строчку исправлять, там та же ошибка, но попробую пока сама))
18 pumbaEO
 
25.07.12
13:53
не верю, что вконтакте нету фото или где-то еще.
(16) так не честно.
19 EasyRider
 
25.07.12
13:54
(15)фото нужно на моменте себя перед фотоаппаратом
20 Карась
 
25.07.12
13:57
Да будет  фото,я сейчас не за своим компьютером,вечером выложу)
21 Карась
 
25.07.12
13:58
22 pumbaEO
 
25.07.12
14:07
Конфигурация Библиотека стандартных подсистем
ОбщийМодуль.УправлениеПечатьюOOWriterКлиент - там найдешь многие ответы на свои вопросы.
23 SherifSP
 
25.07.12
14:08
(1) +++
24 SherifSP
 
25.07.12
14:11
(21)Как для программиста очень даже ничего
25 Карась
 
25.07.12
14:16
Спасибо)
26 Карась
 
25.07.12
15:03
Проверила, действительно неправильно определила переменную док,переписала.
Док=Desktop.LoadComponentFromURL("C:\\dvstmp\\qqqq.odt", "_blank", 0,Параметры);
Но теперь он пишет:

"{Справочник.ДоговорыКонтрагентов.Форма.ФормаЭлемента.Форма(420)}: Ошибка при вызове метода контекста (LoadComponentFromURL)
     Док=Desktop.LoadComponentFromURL("C:\\advastmp\\qqqq.odt", "_blank", 0,Параметры);
по причине:
Произошла исключительная ситуация ([automation bridge] ): [automation bridge] UnoConversionUtilities<T>::dispatchExObject2Sequence
Conversion of dispatch object to Sequence failed!
Произошла исключительная ситуация ([automation bridge] ): [automation bridge] UnoConversionUtilities<T>::dispatchExObject2Sequence
Conversion of dispatch object to Sequence failed!"

и вот это я уже, честно говоря в ступоре, сначала я не указывала параметры, и он жаловался на не совпадение типов, пока пытаюсь в режиме отладки, но безуспешно...
27 Карась
 
25.07.12
17:13
Посидела еще немного, посмотрела, в моем случае я в переменную FilePath передаю ссылку на уже существующий файл,то есть мне надо будет обрабатывать ее с помощью функции ConvertToUrl, но что-то мне подсказывает что я ушла далеко в сторону, плюс еще я не стала передавать вид массива, опять же не уверена, что это правильно.
28 dangerouscoder
 
25.07.12
17:22
29 Карась
 
25.07.12
21:37
Спасибо большое, буду пробовать)
30 Карась
 
25.07.12
21:42
Фотографию, как обещала, загрузила)
31 Карась
 
26.07.12
09:48
С этим вариантом пока тоже исключительная ошибка, я немного не пойму похоже дело в указании массива, я его не использую,но как поняла, что без этого никак...
32 Карась
 
26.07.12
10:36
Я попыталась сделать кусок кода как в этой ссылке, но у меня пока не работает
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
   
Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
   
НастройкиОткрытия = Новый COMSafeArray("VT_VARIANT", 1);

PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
   PropertyValue.Name = "Hidden";
   PropertyValue.Value = Истина;
   НастройкиОткрытия.SetValue(0, PropertyValue);
   ВременныйФайлXLS_какУРЛ = // "file:///" +  СтрЗаменить("C:\\dvstmp\\qqqq.odt", "\", "/"); // приводим путь к файлу из виндового формата в опен офисный

Document=Desktop.LoadComponentFromURL( ВременныйФайлXLS_какУРЛ, "_blank", 0,НастройкиОткрытия);

На месте определения Document он выдает ошибку:

"{Справочник.ДоговорыКонтрагентов.Форма.ФормаЭлемента.Форма(434)}: Ошибка при вызове метода контекста (LoadComponentFromURL)
     Document=Desktop.LoadComponentFromURL( ВременныйФайлXLS_какУРЛ, "_blank", 0,НастройкиОткрытия);
по причине:
Произошла исключительная ситуация ([automation bridge] ): com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one."
Возможно я неправильно указала URL-адрес
33 Карась
 
26.07.12
12:02
Прошла еще немного, без функции ConvertToURL работать не будет, то есть надо путь к файлу обрабатывать там, как это сделать пока не поняла, нашла, что надо использовать Стр.Заменить, опять же еще не совсем понимаю, как в данном случае ей воспользоваться, если не сложно, помогите пожалуйста.