Имя: Пароль:
IT
Админ
Не могу разобраться с функцией ConvertToUrl
, ,
0 Карась
 
26.07.12
17:09
Еще раз обращаюсь к Вам, с надеждой на взаимность.У меня стоит задача заполнения документа в open office из формы документа 1с. В документе есть закладки, собственно в них я и буду записывать данные. Мне удалось простучаться к Desktop,
на сайте http://www.realcoding.net/articles/avtomatizatsiya-openofficeorg-calc-pri-pomoshchi-borland-c-builder-60.html
я прочитала как это сделать, но получается, что у меня случай с уже имеющимся файлом, а значит мне надо его обрабатывать через ConvertToURL, эту функцию я написала так:
Функция ConvertToURL(FileName)
   
FileName=СтрЗаменить("C:\advastmp\qqqq.odt","","");
Возврат FileName;
   
КонецФункции

В режиме отладчика система ее проходит,но на этапе

Document=Desktop.LoadComponentFromURL("C:\advastmp\qqqq.odt" , "_blank", 0,НастройкиОткрытия);

У меня выскакивает ошибка:
"Произошла исключительная ситуация ([automation bridge] ): com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one."
Как я поняла, я неправильно обработала путь к файлу в ConverToURL.
Мне нужно помочь правильно заполнить функцию ConvertToURL,а в ней разобрать как правильно заполнить СтрЗаменить. Если мне надо чтобы у меня открывался файл с определенным адресом, значит мне надо указать <сроку> она у меня "C:\\dvs\\qqqq.odt" получается вроде,<ПодстрокуПоиска>-она получается  пустая, потому что я ничего не задавала, а вместо <ПодстрокиЗамены> поидее тоже ничего не писать , но прочитает ли его 1с, вот в чем вопрос, подскажите мне пожалуйста.
1 le_
 
26.07.12
17:16
URL файла не так задается. Открой в браузере какой-нибудь файл и посмотри адрес.
2 le_
 
26.07.12
17:17
(1) *файла с локального диска
3 le_
 
26.07.12
17:20
file:///C:/advastmp/qqqq.odt
4 Карась
 
26.07.12
17:29
А сам путь мы в "" указывает, если  да, то он выдает ту же ошибку(
5 mehfk
 
26.07.12
17:35

функция convertToURL(FileName)
   __ =  стрзаменить(FileName," ","%20" );
   __ =  стрзаменить(__,"\","/" );
   возврат "file:/" + "/localhost/"+__;
   
   
конецфункции

Книга знаний: v8: Работа с Оpen Office из 1С на примере Calc
6 Карась
 
26.07.12
17:37
а как система поймет что ей нужно открыть именно мой файл,если я его путь не указываю?
7 NS
 
26.07.12
17:38
(6) Ты сама у себя спрашиваешь?
8 Карась
 
26.07.12
17:41
Нет, я пока не дошла еще до такого состояния, чтобы самой с собой разговаривать
9 mehfk
 
26.07.12
17:42
из ссылки в (5)
Document = Desktop.LoadComponentFromURL(convertToURL(ФайлПрайса), "_blank", 0, Массив);
10 Карась
 
26.07.12
17:44
Подождите, то есть вы хотите сказать, что вместо пути к файлу необходимо указать его имя,простите пожалуйста если совсем глупости говорю,я в мире 1с всего ничего
11 le_
 
26.07.12
17:49
(10) Нет.

Примеров полно: http://goo.gl/wJgZF
12 mehfk
 
26.07.12
17:49
сделай так
ФайлПрайса = "C:\advastmp\qqqq.odt";
13 Карась
 
26.07.12
17:54
Через СтрЗаменить не пропускать?
14 mehfk
 
26.07.12
17:55
как в (5)
15 Карась
 
26.07.12
18:00
пока ошибку исключительной ситуации выдает, странно
16 NS
 
26.07.12
18:01
(15) сообщить(convertToURL(ФайлПрайса)), и выложить в форум.
17 Карась
 
26.07.12
18:06
А как мне теперь запись дампа отменить?
18 Карась
 
26.07.12
18:07
он вообще перестал ошибки выдавать просто их записывает
19 Карась
 
26.07.12
18:13
Аааа все отменила
20 Карась
 
26.07.12
18:25
Простите просто раньше такого не делала, поэтому меня немного в ступор это ввело
21 Карась
 
26.07.12
22:59
Пока функция converToURL  у меня выглядит так
Функция ConvertToURL(FileName)
   
   
FileName="file///:"+СтрЗаменить("C:/advastmp/qqqq.odt","","");
Возврат FileName;
   
КонецФункции
22 NS
 
26.07.12
23:29
Вот это бред...
23 Карась
 
27.07.12
09:23
Сама так думаю, но вот пока как ее обработать не придумала, пытаюсь сделать как в
функция convertToURL(FileName)
  __ =  стрзаменить(FileName," ","%20" );
  __ =  стрзаменить(__,"\","/" );
  возврат "file:/" + "/localhost/"+__;
Но пока не могу адаптировать под свой случай(просто с таким еще сталкиваться не приходилось)
24 Карась
 
27.07.12
09:41
Вот сделала так, но опять выдает ошибку исключительности
функция convertToURL(FileName)
   __ =  стрзаменить(FileName," ","%20" );
   __ =  стрзаменить(__,"\","/" );
   возврат "file:/" + "/localhost/"+__;
   
КонецФункции
25 Карась
 
27.07.12
09:42
FileName определила как "C:\advastmp\qqqq.odt";
26 Карась
 
27.07.12
10:49
Все прошла добралась до закладки, спасибо огромное за помощь!!!
Вот как получилось
{Процедура Печать()
   
   //Разбираюсь с Док
   // СМ = Новый COMОбъект("com.sun.star.ServiceManager");
   ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
   
   //ДТ = СМ.OleFunction("createInstance", "com.sun.star.frame.Desktop");
   
   //Desktop = ServiceManager.OleFunction("createInstance","com.sun.star.frame.Desktop");
   
    Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
   //Док = ДТ.OleFunction("LoadComponentFromURL", "C:\\advastmp\\qqqq.odt", "_blank", 0 );
   //Док = Desktop.createInstance("LoadComponentFromURL", "C:\\advastmp\\qqqq.odt", "_blank", 0 );
       
    //Док=Desktop.LoadComponentFromURL("C:\\advastmp\\qqqq.odt", "_blank", 0,НастройкиОткрытия);
   
   
   НастройкиОткрытия = Новый COMSafeArray("VT_VARIANT", 1);
   PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
   PropertyValue.Name = "Hidden";
   PropertyValue.Value = Истина;
   НастройкиОткрытия.SetValue(0, PropertyValue);
   //ВременныйФайлXLS_какУРЛ =   "file:///" + СтрЗаменить(ВременныйФайлXLS_какУРЛ, "\", "C:\\advastmp\\qqqq.odt"); // приводим путь к файлу из виндового формата в опен офисный
   
   //URL = ServiceManager.ConvertToURL(СтрЗаменить("","","C:\\advastmp\\qqqq.odt"));
   ФайлПрайса="C:/advastmp/qqqq.odt";
   URL = ConvertToURL(ФайлПрайса);
           
   //Document=Desktop.LoadComponentFromURL("private:factory/swriter" , "_blank", 0,НастройкиОткрытия);
   Document=Desktop.LoadComponentFromURL(URL , "_blank", 0,НастройкиОткрытия);
   Закладки=Document.getBookmarks();
   
   
   Попытка  
       Для ПеременнаяСчетчик=0 По 1 Цикл
       Закладка=Закладки.getByName("bm1");
       КонецЦикла;
   Исключение
       Сообщить("Фигня какая то с закладкой """+"Закладка"+"""!!!");
       Возврат;
       
   КонецПопытки;
   Якорь=Закладка.getAnchor();
   //Курсор.gotoRange(Якорь, 0);
   //Текст.insertString(Курсор, "Тут была закладка """+"Закладка"+"""", 0 );

КонецПроцедуры

//Функция ConvertToURL(FileName)
//    //Не правильно определен путь к файлу, надо искать определение пути к файлу в unix
//    
//FileName="file///:"+СтрЗаменить("C:/advastmp/qqqq.odt","","");
//Возврат FileName;
функция convertToURL(FileName)
   __ =  стрзаменить(FileName," ","%20" );
   __ =  стрзаменить(__,"\","/" );
   возврат "file:/" + "/localhost/"+__;
   
КонецФункции}