Заполнение таблиц в OO writer из 1с #622734


#0 by Карась
Добрый день! У меня стоит задача заполнения документа в 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 by Карась
А еще он жалуется на строку Закладка5=Закладки5.getByName("Partner2"); пишет здесь, что метод объекта не обнаружен
#2 by Карась
Все строку закладка5 я прошла, но никак не могу разобраться со строкой Курсор5.gotoRange(Якорь5, 0);         Текст.insertString(Курсор5, ""+Закладки5+"", 4 ); Может это дело не в том, что закладка в таблице находится?
#3 by Карась
Вот такую ошибку он выдает Ошибка при вызове метода контекста (insertString)Текст.insertString(Курсор6, ""+Закладки6+"", 5 );
#4 by smaharbA
получай диапазон за закладкой и у него текст
#5 by Карась
То есть так? Текст.insertString(Курсор5, ""+Закладки5+"", 4 );             Курсор5.gotoRange(Якорь5, 0);
#6 by Карась
Так уже что то получилось, сейчас проверю правильно ли заполняет
#7 by Карась
На закладки5 перестал давать ошибку, так же сделала в закладки 6, там тоже таблица, но там выдает ту же ошибку и закладки 5 заполнять перестал
#8 by smaharbA
[ИмяЗакладки]="Закладка" [Контроллер]=[Док].CurrentController [Курсор]=[Контроллер].getViewCursor [Закладки]=[Док].getBookmarks [Закладка]=[Закладки].getByName([ИмяЗакладки]) [Якорь]=[Закладка].getAnchor [Курсор].gotoRange([Якорь], 0) [Текст]=[Курсор].getText //это [Курсор].CharFontName="Times New Roman" [Курсор].CharHeight=48 [Текст].insertString([Курсор], "Тут была закладка """+[ИмяЗакладки]+"""", 0 )
#9 by Карась
я по этой схеме и делала, на каждую закладку получается надо отдельную метку получать
#10 by Карась
но пока не работает
#11 by Карась
а текст получать тоже
#12 by smaharbA
Вы это о чем ?
#13 by Карась
Я заполняю закладки так Курсор.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 by smaharbA
на все надо получать отдельно, ибо будут и разделы и поля и врезки и прочие надписи
#15 by Карась
Текст.Курсор5.GetText;           Текст.insertString(Курсор5, ""+Закладки5+"", 4 );   Курсор5.gotoRange(Якорь5, 0);           Текст.Курсор6.GetText; Текст.insertString(Курсор6, ""+Закладки6+"", 5 );   Курсор6.gotoRange(Якорь6, 0); То есть вот так?
#16 by Карась
Просто так он пока тоже ошибку выдает
#17 by Карась
Причем предыдущие закладки он у меня спокойно заполняет, без получения текста на них, что наверное странно
#18 by smaharbA
либо Якорь.setString(3232323)
#19 by smaharbA
смотрите внимательно это не тоже самое либо просто (но может работать не во всех версиях ооо, хотя счас наверное уже во всех текущих будет ок)
#20 by Карась
Попробую помудрить, просто я в принципе с такой темой впервые в жихни сталкиваюся и для меня это все темный лес
#21 by Карась
Вот Вы написали, что можно сделать  Якорь.setString(3232323), если я в нее вставляю   Якорь5.setString(Курсор5, ""+Закладки5+"", 4 );, то она не работает, честно, я уэе совсем запуталась, что сейчас необходимо сделать
#22 by smaharbA
Якорь5.setString("Тут нужный текст");
#23 by Карась
Возможно я сейчас задам самый глупый вопрос, как туда текст из закладки5 передать?
#24 by Карась
Или можно сразу из реквизита документа взять
#25 by Карась
Якорь5.setString(Закладки5);           Курсор5.gotoRange(Якорь5, 0); вот так я пыталась, не работает, но я не думаю, что это правильно
#26 by smaharbA
Нужно вставить таблицы в определенные закладки ?
#27 by Карась
Не надо вставлять таблицы, в таблице уже есть закладка в нее нужно передать текст из Закладки5
#28 by Карась
Ну из этой переменной
#29 by smaharbA
или нужно заполнить закладки в имеющихся уже таблицах ?
#30 by Карась
да, именно
#31 by Карась
Я просто сегодня уже столько вариантов перелопатила, думала запрашивать отдельный доступ к таблице, но дело в том, что в режиме отладки он ее находит и выделяет, но записывать туда текст не хочет, выдает ошибку на метод
#32 by Карась
Только сейчас поняла, что абстрактно ответила на вопрос, прошу прощения нужно заполнить закладки в имеющихся уже таблицах
#33 by Карась
ААаааааа я разобралась вот так надо сделать Якорь5.setString(""+Закладки5+"");             Курсор5.gotoRange(Якорь5, 0); Тогда все передается!!!!!!!!!!!!!!! СПАСИИИИИИБО!!!!!
#34 by smaharbA
[1C] [Закладки]=[Док].getBookmarks [Контроллер]=[Док].CurrentController [Курсор]=[Контроллер].getViewCursor [Закладка1]=[Закладки].getByName("Tip") [Закладка2]=[Закладки].getByName("Number") [Закладка3]=[Закладки].getByName("Partner") [Закладка4]=[Закладки].getByName("Partner1") [Закладка5]=[Закладки].getByName("Partner2") [Закладка6]=[Закладки].getByName("Partner3") [Якорь1]=[Закладка1].getAnchor [Якорь2]=[Закладка2].getAnchor [Якорь3]=[Закладка3].getAnchor [Якорь4]=[Закладка4].getAnchor [Якорь5]=[Закладка5].getAnchor [Якорь6]=[Закладка6].getAnchor [Закладки1]=[Объект].[ХозяйственнаяОперация].[Наименование] [Закладки2]=[Объект].[Номер] [Закладки3]=[Объект].[Партнер].[Наименование] [Закладки4]=[Объект].[Контрагент].[Наименование] [Закладки5]=[Объект].[Контрагент].[Наименование] [Закладки6]=[Объект].[Контрагент].[Наименование] [Якорь1].setString([Закладки1]) [Якорь2].setString([Закладки2]) [Якорь3].setString([Закладки3]) [Якорь4].setString([Закладки4]) [Якорь5].setString([Закладки5]) [Якорь6].setString([Закладки6]) [/1C]
#35 by Карась
Спасибо Вам огромное!!!!
#36 by Карась
Кстати а вот эта строка у нас задает размер шрифта, а как мне сделать всю строку заглавными буквами?
#37 by Карась
Курсор.CharHeight=16;
#38 by Карась
Я знаю что в SQL  есть такая функция UPPER, но не уверена, что она есть в 1с.
#39 by smaharbA
есть
#40 by Карась
а как это можно сделать в 1с?
#41 by Карась
я описала код, где задаю шрифт,но как задать преобразование всех букв в верхний регистр Курсор.gotoRange(Якорь, 0);   Курсор.CharFontName="Times New Roman"; Курсор.CharHeight=16;
#42 by Карась
я смотрела здесь, вы же и писали но там как я поняла ничего функции преобразования в верхний регистр нет
#43 by smaharbA
...=ВРЕГ("переведем в вверх")
#44 by Карась
Спасибо большое, уже вставила, работает) Вы меня прямо выручаете!!!
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С