Имя: Пароль:
IT
Админ
Нужна помощь с закладками в таблицах OO writer
,
0 Карась
 
30.07.12
11:37
Добрый день!
У меня стоит задача заполнения документа в open office из формы документа 1с. Я создала кнопку "Печать", после чего начала описывать процедуру.


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);
FilePath="C:/dvstmp/ договор №48.odt";
   
   
URL = ConvertToURL(FilePath);
           

Document=Desktop.LoadComponentFromURL(URL,"_blank",0,НастройкиОткрытия);
   
   
   
Закладки=Document.getBookmarks();
Закладки2=Document.getBookmarks();    
Закладки3=Document.getBookmarks();
Закладки4=Document.getBookmarks();
Закладки5=Document.getBookmarks();
Закладки6=Document.getBookmarks();



Текст=Document.getText();
Контроллер=Document.CurrentController;Курсор=Контроллер.getViewCursor();
Курсор2=Контроллер.getViewCursor();
Курсор3=Контроллер.getViewCursor();
Курсор4=Контроллер.getViewCursor();
Курсор5=Контроллер.getViewCursor();
Курсор6=Контроллер.getViewCursor();

Попытка  
               
   
       Закладка=Закладки.getByName("Tip");
   Закладка2=Закладки2.getByName("Number");
   Закладка3=Закладки.getByName("Partner");
   Закладка4=Закладки.getByName("Partner1");
       Закладка5=Закладки.getByName("Partner2");
       Закладка6=Закладки.getByName("Partner3");

Таблица = Document.createInstance("com.sun.star.text.TextTable");
       Document.Text.insertTextContent(Курсор5, Таблица, True);
   Document.Text.insertTextContent(Курсор6, Таблица, True);

Исключение
       Сообщить("Закладка не найдена """+"Закладка"+"""!!!");
       Возврат;
       
   КонецПопытки;
       Якорь=Закладка.getAnchor();
   Якорь2=Закладка2.getAnchor();
   Якорь3=Закладка3.getAnchor();
   Якорь4=Закладка4.getAnchor();
   Якорь5=Закладка5.getAnchor();
   Якорь6=Закладка6.getAnchor();
    Document.getCurrentController().getFrame().getContainerWindow().setVisible(Истина);
       
       Закладки=Объект.ХозяйственнаяОперация;
   Закладки2=Объект.Номер;
   Закладки3=Объект.Партнер;
   Закладки4=Объект.Контрагент;
   Закладки5=Объект.Контрагент;
   Закладки6=Объект.Контрагент;
       
 
Курсор.gotoRange(Якорь, 0);
Текст.insertString(Курсор, ""+Закладки+"", 0 );    /

Курсор2.gotoRange(Якорь2, 0);
Текст.insertString(Курсор2, ""+Закладки2+"", 1 );
   

Курсор3.gotoRange(Якорь3, 0);
Текст.insertString(Курсор3, ""+Закладки3+"", 2 );
       
       
Курсор4.gotoRange(Якорь4, 0);
Текст.insertString(Курсор4, ""+Закладки4+"", 3 );
       
Курсор5.gotoRange(Якорь5, 0);
Текст.insertTextContent(Курсор5, ""+Закладки5+"", 4 );
       
Курсор6.gotoRange(Якорь6, 0);
Текст.insertString(Курсор6, ""+Закладки6+"", 5 );





У меня получилось заполнить закладки из 1с, но не выходит заполнить закладки, которые находятся в таблице документа, я пока не особо разобралась, как это сделать,к ним получается отдельно надо доступ просить, если не трудно, помогите пожалуйста.
1 Карась
 
30.07.12
11:38
Собственно закладка в таблице у меня находится на месте закладки 5
2 Карась
 
30.07.12
11:53
Как я понимаю должно быть что-то наподобие
http://www.1c-galaxy.ru/forum5/topic931834/
Но я пока не могу адаптировать под свой случай
3 Карась
 
30.07.12
12:20
А так при запуске программы выдает ошибку о том, что он не нашел метод в этой строке, собственно эта закладка у меня и находится в таблице
Курсор5.gotoRange(Якорь5, 0);
Текст.insertTextContent(Курсор5, ""+Закладки5+"", 4 );
4 Карась
 
30.07.12
12:40
Я проверила в режиме отладчика, он в принципе текст ячейки выделяет, скорее всего дело именно в методе записи
5 Карась
 
30.07.12
13:44
Я пока не понимаю какой метод использовать, но мне кажется, что надо дополнительно вводить доступ к таблицам ОО
6 Карась
 
30.07.12
14:13
И такой вопрос надо ли искать таблицу по индексу?