|
Заполнение таблиц в OO writer из 1с | ☑ | ||
---|---|---|---|---|
0
Карась
30.07.12
✎
14:39
|
Добрый день!
У меня стоит задача заполнения документа в 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 ); И вот на этом месте, где закладка находится в таблице, Курсор5.gotoRange(Якорь5, 0); Текст.insertTextContent(Курсор5, ""+Закладки5+"", 4 ); Он выдает ошибку, что метод объекта не обнаружен |
|||
1
Карась
30.07.12
✎
14:45
|
А еще он жалуется на строку
Закладка5=Закладки5.getByName("Partner2"); пишет здесь, что метод объекта не обнаружен |
|||
2
Карась
30.07.12
✎
15:28
|
Все строку закладка5 я прошла, но никак не могу разобраться со строкой
Курсор5.gotoRange(Якорь5, 0); Текст.insertString(Курсор5, ""+Закладки5+"", 4 ); Может это дело не в том, что закладка в таблице находится? |
|||
3
Карась
30.07.12
✎
15:31
|
Вот такую ошибку он выдает
Ошибка при вызове метода контекста (insertString)Текст.insertString(Курсор6, ""+Закладки6+"", 5 ); |
|||
4
smaharbA
30.07.12
✎
15:39
|
получай диапазон за закладкой и у него текст
|
|||
5
Карась
30.07.12
✎
15:40
|
То есть так?
Текст.insertString(Курсор5, ""+Закладки5+"", 4 ); Курсор5.gotoRange(Якорь5, 0); |
|||
6
Карась
30.07.12
✎
15:42
|
Так уже что то получилось, сейчас проверю правильно ли заполняет
|
|||
7
Карась
30.07.12
✎
15:47
|
На закладки5 перестал давать ошибку, так же сделала в закладки 6, там тоже таблица, но там выдает ту же ошибку и закладки 5 заполнять перестал
|
|||
8
smaharbA
30.07.12
✎
15:48
|
[ИмяЗакладки]="Закладка"
[Контроллер]=[Док].CurrentController [Курсор]=[Контроллер].getViewCursor() [Закладки]=[Док].getBookmarks() [Закладка]=[Закладки].getByName([ИмяЗакладки]) [Якорь]=[Закладка].getAnchor() [Курсор].gotoRange([Якорь], 0) [Текст]=[Курсор].getText() //это [Курсор].CharFontName="Times New Roman" [Курсор].CharHeight=48 [Текст].insertString([Курсор], "Тут была закладка """+[ИмяЗакладки]+"""", 0 ) |
|||
9
Карась
30.07.12
✎
15:50
|
я по этой схеме и делала, на каждую закладку получается надо отдельную метку получать
|
|||
10
Карась
30.07.12
✎
15:50
|
но пока не работает
|
|||
11
Карась
30.07.12
✎
15:50
|
а текст получать тоже
|
|||
12
smaharbA
30.07.12
✎
15:51
|
(9) Вы это о чем ?
|
|||
13
Карась
30.07.12
✎
15:53
|
Я заполняю закладки так
Курсор.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); Текст.insertString(Курсор6, ""+Закладки6+"", 5 ); Курсор6.gotoRange(Якорь6, 0); закладки5 и закладки6 у меня лежат в таблице, на них текст отдельно получать надо? |
|||
14
smaharbA
30.07.12
✎
15:54
|
на все надо получать отдельно, ибо будут и разделы и поля и врезки и прочие надписи
|
|||
15
Карась
30.07.12
✎
15:56
|
Текст.Курсор5.GetText();
Текст.insertString(Курсор5, ""+Закладки5+"", 4 ); Курсор5.gotoRange(Якорь5, 0); Текст.Курсор6.GetText(); Текст.insertString(Курсор6, ""+Закладки6+"", 5 ); Курсор6.gotoRange(Якорь6, 0); То есть вот так? |
|||
16
Карась
30.07.12
✎
15:59
|
Просто так он пока тоже ошибку выдает
|
|||
17
Карась
30.07.12
✎
16:03
|
Причем предыдущие закладки он у меня спокойно заполняет, без получения текста на них, что наверное странно
|
|||
18
smaharbA
30.07.12
✎
16:08
|
либо
Якорь.setString(3232323) |
|||
19
smaharbA
30.07.12
✎
16:09
|
(15)(16)(17) смотрите внимательно (8) это не тоже самое
либо просто (18) (но (18) может работать не во всех версиях ооо, хотя счас наверное уже во всех текущих будет ок) |
|||
20
Карась
30.07.12
✎
16:15
|
Попробую помудрить, просто я в принципе с такой темой впервые в жихни сталкиваюся и для меня это все темный лес
|
|||
21
Карась
30.07.12
✎
16:18
|
Вот Вы написали, что можно сделать Якорь.setString(3232323), если я в нее вставляю Якорь5.setString(Курсор5, ""+Закладки5+"", 4 );, то она не работает, честно, я уэе совсем запуталась, что сейчас необходимо сделать
|
|||
22
smaharbA
30.07.12
✎
16:19
|
Якорь5.setString("Тут нужный текст");
|
|||
23
Карась
30.07.12
✎
16:23
|
Возможно я сейчас задам самый глупый вопрос, как туда текст из закладки5 передать?
|
|||
24
Карась
30.07.12
✎
16:23
|
Или можно сразу из реквизита документа взять
|
|||
25
Карась
30.07.12
✎
16:24
|
Якорь5.setString(Закладки5);
Курсор5.gotoRange(Якорь5, 0); вот так я пыталась, не работает, но я не думаю, что это правильно |
|||
26
smaharbA
30.07.12
✎
16:31
|
(25)
Нужно вставить таблицы в определенные закладки ? |
|||
27
Карась
30.07.12
✎
16:33
|
Не надо вставлять таблицы, в таблице уже есть закладка в нее нужно передать текст из Закладки5
|
|||
28
Карась
30.07.12
✎
16:33
|
Ну из этой переменной
|
|||
29
smaharbA
30.07.12
✎
16:34
|
или нужно заполнить закладки в имеющихся уже таблицах ?
|
|||
30
Карась
30.07.12
✎
16:34
|
да, именно
|
|||
31
Карась
30.07.12
✎
16:40
|
Я просто сегодня уже столько вариантов перелопатила, думала запрашивать отдельный доступ к таблице, но дело в том, что в режиме отладки он ее находит и выделяет, но записывать туда текст не хочет, выдает ошибку на метод
|
|||
32
Карась
30.07.12
✎
16:43
|
Только сейчас поняла, что абстрактно ответила на вопрос, прошу прощения
нужно заполнить закладки в имеющихся уже таблицах |
|||
33
Карась
30.07.12
✎
16:49
|
ААаааааа я разобралась вот так надо сделать
Якорь5.setString(""+Закладки5+""); Курсор5.gotoRange(Якорь5, 0); Тогда все передается!!!!!!!!!!!!!!! СПАСИИИИИИБО!!!!! |
|||
34
smaharbA
30.07.12
✎
17:01
|
|
|||
35
Карась
30.07.12
✎
17:15
|
Спасибо Вам огромное!!!!
|
|||
36
Карась
30.07.12
✎
17:20
|
Кстати а вот эта строка у нас задает размер шрифта, а как мне сделать всю строку заглавными буквами?
|
|||
37
Карась
30.07.12
✎
17:22
|
Курсор.CharHeight=16;
|
|||
38
Карась
30.07.12
✎
17:29
|
Я знаю что в SQL есть такая функция UPPER, но не уверена, что она есть в 1с.
|
|||
39
smaharbA
30.07.12
✎
17:29
|
есть
|
|||
40
Карась
30.07.12
✎
17:32
|
а как это можно сделать в 1с?
|
|||
41
Карась
30.07.12
✎
17:33
|
я описала код, где задаю шрифт,но как задать преобразование всех букв в верхний регистр
Курсор.gotoRange(Якорь, 0); Курсор.CharFontName="Times New Roman"; Курсор.CharHeight=16; |
|||
42
Карась
30.07.12
✎
17:55
|
я смотрела здесь, вы же и писали v8: 1с и OpenOffice Writer
но там как я поняла ничего функции преобразования в верхний регистр нет |
|||
43
smaharbA
30.07.12
✎
18:09
|
...=ВРЕГ("переведем в вверх")
|
|||
44
Карась
30.07.12
✎
23:04
|
Спасибо большое, уже вставила, работает)
Вы меня прямо выручаете!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |