Имя: Пароль:
IT
Админ
Ошибка в определении переменной
,
0 Карась
 
26.07.12
13:22
Добрый день! Я решаю задачу заполнения документа OO из формы документа 1с.Процедуру заполнения я начала описывать:

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);
   
   
URL = ConvertToURL(ИмяФайла);
Document=Desktop.LoadComponentFromURL(URL,"_blank",0,НастройкиОткрытия);
Закладки=Document.getBookmarks();
   
   Попытка
       Закладка=Закладки.getByName("Закладка");                                                    
   Исключение
       Сообщить("Фигня какая то с закладкой """+"Закладка"+"""!!!");
       Возврат;
   КонецПопытки;
   Якорь=Закладка.getAnchor();
   //Курсор.gotoRange(Якорь, 0);
   //Текст.insertString(Курсор, "Тут была закладка """+"Закладка"+"""", 0 );

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


 

функция ConvertToURL(ИмяФайла)
   
Возврат ИмяФайла="C:\\advastmp\\qqqq.odt"+ СтрЗаменить(ИмяФайла,"\","/");
       
Конецфункции

При проверке синтаксиса система выдает ошибку, пишет, что переменная ИмяФайла не определена, хотя например вот здесь http://help1c.com/faq/view/587.html ее не определяли. Если не сложно, помогите пожалуйста.
1 ДенисЧ
 
26.07.12
13:23
функция ConvertToURL(ИмяФайла)
    Возврат ИмяФайла="C:\\advastmp\\qqqq.odt"+ СтрЗаменить(ИмяФайла,"\","/");
Конецфункции


Что это было, Бэрримор?????
2 Карась
 
26.07.12
13:29
На самом деле писала как здесь, просто путь к шаблону у меня "C:\\dvstmp\\qqqq.odt", я как поняла если сразу его описать в document, работать не будет его надо пропустить через функцию ConvertToUrl, а вот как это сделать я не знаю, я просто совсем недавно изучаю программирование в 1с, поэтому могу допускать детские ошибки
3 EasyRider
 
26.07.12
13:30
(0)Може там это было реквизитом?Определи и все дела.
4 Карась
 
26.07.12
13:30
ссылку не вставила вот откуда брала пример
http://help1c.com/faq/view/587.html
5 Карась
 
26.07.12
13:30
Имя файла было реквизитом?
6 EasyRider
 
26.07.12
13:31
да.Строковый реквизит ИмяФайла в обработке
7 Карась
 
26.07.12
13:31
я его просто как переменную завела
8 Карась
 
26.07.12
13:31
то есть попробовать название переменной поменять?
9 EasyRider
 
26.07.12
13:32
(7)если ругается,что переменная не определна,значит не завела
10 Карась
 
26.07.12
13:34
да я просто не понимаю, где мне ее заводить, я же ее получаю в другой функции, тоже самое в http://help1c.com/faq/view/587.html , там ничего не определяют
11 Карась
 
26.07.12
13:36
Изначально ошибка шла из строки
Document=Desktop.LoadComponentFromURL("C:\\dvs\\qqqq.odt","_blank",0,НастройкиОткрытия);
12 EasyRider
 
26.07.12
13:38
URL = ConvertToURL(ИмяФайла); и что в этом месте лежит в ИмяФайла?
13 Карась
 
26.07.12
13:38
Выдавал ошибку
"{Справочник.ДоговорыКонтрагентов.Форма.ФормаЭлемента.Форма(434)}: Ошибка при вызове метода контекста (LoadComponentFromURL)
    Document=Desktop.LoadComponentFromURL( ВременныйФайлXLS_какУРЛ, "_blank", 0,НастройкиОткрытия);
по причине:
Произошла исключительная ситуация ([automation bridge] ): com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one."
Вот я и подумала, что не обработала путь к файлу через ConvertToURL
14 EasyRider
 
26.07.12
13:38
перед вызовом
15 Карась
 
26.07.12
13:38
Поидее обработанный путь к файлу
16 EasyRider
 
26.07.12
13:39
ты отладчиком проверь сперва
17 Карась
 
26.07.12
13:41
Я даже в отладчик не могу пока запустить так как он жалуется на то, что не определена переменная, а если по старому делать, то в отладчике переменную document он вообще определить не может,жалуясь на исключительную ситуацию.
18 EasyRider
 
26.07.12
13:43
(17)ну сделай
ИмяФайла = "";
URL = ConvertToURL(ИмяФайла);
сохранить даст,но это конечно муйня.
19 Карась
 
26.07.12
14:51
Мне предложили такой вариант, создать внешнюю обработку и все отладить там.
Создала, но так как мне посоветовали еще все делать на примере ОбщийМодуль.УправлениеПечатьюOOWriterКлиент, там немного по другому, я переделала код, но получилось, что путь к документу вообще теперь нигде не указывается, и естественно обработка закладок не находит, как мне получить доступ к документу, чтобы он открывал нужный мне документ?
20 Карась
 
26.07.12
14:53
Код следующий получился

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);
           
Document=Desktop.LoadComponentFromURL("private:factory/swriter" , "_blank", 0,НастройкиОткрытия);
Закладки=Document.getBookmarks();
   
   
Попытка  
   Для ПеременнаяСчетчик=0 По 1 Цикл
Закладка=Закладки.getByName("Закладка");
КонецЦикла;
   Исключение
       Сообщить("Фигня какая то с закладкой """+"Закладка"+"""!!!");
       Возврат;
       
КонецПопытки;
Якорь=Закладка.getAnchor();
21 Карась
 
26.07.12
15:15
Я понимаю, что возможно задаю совсем глупые вопросы, но просто третий день сижу над этой задачей и не могу пока ее решить...
22 Карась
 
26.07.12
15:32
Еще кое что отыскала если на месте пути к файлу мы пишем "private:factory/swriter" то создается новый файл, то есть все таки мне надо писать там путь к файлу, но как мне его обработать, чтобы 1с его восприняла нормально.
23 Карась
 
26.07.12
16:17
Все я наконец то поняла с чем мне надо помочь, мне нужно помочь правильно заполнить функцию ConvertToURL,а в ней разобрать как правильно заполнить СтрЗаменить. Если мне надо чтобы у меня открывался файл с определенным адресом, значит мне надо указать <сроку> она у меня пустая получается вроде,<ПодстрокуПоиска>-она получается опять пустая, потому что я ничего не задавала, а вместо <ПодстрокиЗамены> поидее указать путь к файлу "C:\\dvs\\qqqq.odt", но прочитает ли его 1с, вот в чем вопрос, подскажите мне пожалуйста.