Имя: Пароль:
1C
1С v8
Как определить номер найденной строки в Word?
0 KorolevP
 
31.07.12
18:28
Добрый день!

Задача следующая: необходимо в определенном месте документа Word формировать таблицу. Пользователь выделяет это место определенным набором символов, допустим "ВывестиТаблицу".

Делаю поиск с помощью:
Замена = COMОбъект.Content.Find;        
Замена.Execute("ВывестиТаблицу");
   
Но не пойму как определить номер страницы :)

Благодарю за помощь!
1 KorolevP
 
31.07.12
18:33
Номер строки* конечно же :)
2 izekia
 
31.07.12
18:35
селекшн вроде будет
3 France
 
31.07.12
18:36
включить запись макроса и сделать поиск в ворде
4 izekia
 
31.07.12
18:38
(2)+ в смысле найденный фрагмент будет выделен
5 KorolevP
 
31.07.12
18:43
(4) не очень пойму где нужно селекшн поставить:)

вот код формирования документа:

COMОбъект = ПолучитьCOMОбъект(ИмяОткрываемогоФайла);

Замена = COMОбъект.Content.Find;        
Замена.Execute("**ВывестиТаблицу**");
       
Массив = Новый Массив(5);//сделаем таблицу из 5 строк + шапка
Word = COMОбъект.Application;
Док=Word.Documents(1);
Док.Activate();
Word.Selection.MoveDown(,21); //21 строка - первая строка таблицы, должно быть передано в переменной
Табл= Word.Selection.Range;
Табл.InsertAfter("Сумма*Валюта*Назначение*Дата долга*Вид документа*Номер документа* *Дата оплаты");
Табл.InsertParagraphAfter();

Для й = 1 по Массив.Количество() Цикл
   Табл.InsertAfter("1"+"*"+"2"+"*"+"3"+"*"+"4"+"*"+"5"+ "*"+"6"+ "*"+"7"+ "*"+"8");
   Табл.InsertParagraphAfter();
КонецЦикла;
       
Табл.ConvertToTable("*");
COMОбъект.Tables(1).AutoFormat(1);
6 izekia
 
31.07.12
18:50
а это у тебя не работает?
7 KorolevP
 
31.07.12
18:52
(6) ды работает как раз :) но Word.Selection.MoveDown(,21) привязывается к 21 строке, а я хочу, чтобы пользователь мог сам выбрать место (строку), где будет выводиться таблица.
вот никак не могу определить ее :))
8 izekia
 
31.07.12
18:58
Word.Selection.MoveDown(,21)
это вообще убери
9 KorolevP
 
31.07.12
19:04
убрал :) тогда таблица выводится в самом начале документа)))
10 izekia
 
31.07.12
19:18
ага, в общем диапазон для которого делаешь поиск содержит найденную строку, вот это работает:

   Док = ПолучитьCOMОбъект("c:\test.docx");
   Док.Activate();

   Табл = Док.Content;        
   Табл.Find.Execute("**ВывестиТаблицу**");
           
   Массив = Новый Массив(5);//сделаем таблицу из 5 строк + шапка
   
   //Табл= Док.Application.Selection.Range;
   Табл.InsertAfter("Сумма*Валюта*Назначение*Дата долга*Вид документа*Номер документа* *Дата оплаты");
   Табл.InsertParagraphAfter();

   Для й = 1 по Массив.Количество() Цикл
       Табл.InsertAfter("1"+"*"+"2"+"*"+"3"+"*"+"4"+"*"+"5"+ "*"+"6"+ "*"+"7"+ "*"+"8");
       Табл.InsertParagraphAfter();
   КонецЦикла;
           
   Табл.ConvertToTable("*");
   Док.Tables(1).AutoFormat(1);
   Док.Application.Visible = True;
11 izekia
 
31.07.12
19:18
правда не совсем так
12 KorolevP
 
31.07.12
19:21
Вот так
COMОбъект.BuiltInDocumentProperties(23)
можно определить количество строк)) но мне бы текущую :)
13 izekia
 
31.07.12
19:22
(!2) почитай (10)
14 izekia
 
31.07.12
19:26
вот это как надо работает, без лишнего кода:

   Док = ПолучитьCOMОбъект("c:\test.docx");

   Табл = Док.Content;        
   Табл.Find.Execute("**ВывестиТаблицу**");
           
   Массив = Новый Массив(5);//сделаем таблицу из 5 строк + шапка
   
   Табл.Text = "";
   Табл.InsertAfter("Сумма*Валюта*Назначение*Дата долга*Вид документа*Номер документа* *Дата оплаты");
   Табл.InsertParagraphAfter();

   Для й = 1 по Массив.Количество() Цикл
       Табл.InsertAfter("1"+"*"+"2"+"*"+"3"+"*"+"4"+"*"+"5"+ "*"+"6"+ "*"+"7"+ "*"+"8");
       Табл.InsertParagraphAfter();
   КонецЦикла;
           
   Табл.ConvertToTable("*");
   Док.Tables(1).AutoFormat(1);
   Док.Application.Visible = True;
15 KorolevP
 
31.07.12
19:31
(13),(14) БЛАГОДАРЮ!! :)