|
Word добавить строки таблицы | ☑ | ||
---|---|---|---|---|
0
Pereliviya
24.09.13
✎
09:26
|
День добрый, подскажите как добавить строки в макет Word?
Делаю так: Табл = Word.Tables.Item(3); Для каждого СтрокаСотрудник Из СсылкаНаОбъект.РаботникиОрганизации Цикл Табл.Rows.add(); Табл.Cell(СтрокаСотрудник.НомерСтроки,1).Select(); Word.ActiveWindow.ActivePane.Selection.TypeText(строка(СтрокаСотрудник.Сотрудник)); Табл.Cell(СтрокаСотрудник.НомерСтроки,2).Select(); Word.ActiveWindow.ActivePane.Selection.TypeText(Строка(СтрокаСотрудник.Сотрудник.Код)); КонецЦикла; Ругается на строке Табл.Cell(): "запрашиваемый номер семейства не существует". |
|||
1
Pereliviya
24.09.13
✎
10:17
|
подскажите что делаю не так? Плиззз
|
|||
2
Pereliviya
24.09.13
✎
11:43
|
пробовала так делать, таже ошибка:
Word.Tables(1).Cell(СчетчикЦикла + 2,1).Range.Text = Счет.НомерСтроки; |
|||
3
Масянька
24.09.13
✎
11:46
|
Код для 7.7
Счет.ВыбратьСтроки(); // заполнение таблицы номенклатуры Для СчетчикЦикла = 1 По Счет.КоличествоСтрок() Цикл мОбъект.Tables(1).Rows.Add(); // добавляем строку в конец таблицы Счет.ПолучитьСтрокуПоНомеру(СчетчикЦикла); мОбъект.Tables(1).Cell(СчетчикЦикла + 2,1).Range.Text = Счет.НомерСтроки; мОбъект.Tables(1).Cell(СчетчикЦикла + 2,2).Range.Text = СокрЛП(Счет.Номенклатура.ПолнНаименование); мОбъект.Tables(1).Cell(СчетчикЦикла + 2,3).Range.Text = СокрЛП(Формат(Счет.Количество, "Ч010.2")); мОбъект.Tables(1).Cell(СчетчикЦикла + 2,4).Range.Text = Строка(Счет.Единица); мОбъект.Tables(1).Cell(СчетчикЦикла + 2,5).Range.Text = глФрм(Счет.Цена); мОбъект.Tables(1).Cell(СчетчикЦикла + 2,6).Range.Text = глФрм(Счет.СуммаНДС); мОбъект.Tables(1).Cell(СчетчикЦикла + 2,7).Range.Text = глФрм(Счет.Сумма); КонецЦикла; // итоги мОбъект.Tables(2).Cell(1,2).Range.Text = СокрЛП(Формат(Счет.Итог("Количество"), "Ч010.2")); мОбъект.Tables(2).Cell(1,5).Range.Text = глФрм(Счет.Итог("СуммаНДС")); мОбъект.Tables(2).Cell(1,6).Range.Text = глФрм(Счет.Итог("Сумма")); |
|||
4
Pereliviya
24.09.13
✎
11:47
|
не ругается только так:
Word.Tables(3).Cell(1,1).Range.Text = СтрокаСотрудник.Сотрудник; Word.Tables(3).Cell(1,2).Range.Text = СтрокаСотрудник.Сотрудник.Код; Может в шапке дело? |
|||
5
Масянька
24.09.13
✎
11:47
|
Про мОбъект:
// формируем файл мWord = СоздатьОбъект("Word.Application"); мWord.Visible = 0; мNewDoc = мWord.Documents; мШаблон = СокрЛП(Строка(КаталогШаблонов + мШаблон)); мДок = мNewDoc.Add(мШаблон, 0, 0, 1); // верхний колонтитул мКолонтитул = мДок.Sections.Item(1).Headers.Item(1).Range; мКолонтитул.Find.Execute("[ПечНомерДоговора]",0,0,,,,,,,мНомерДоговора,2); мКолонтитул.Find.Execute("[ПечДатаДоговора]",0,0,,,,,,,Нрег(СокрЛП(мДатаДоговора)),2); мОбъект = мДок.Content; |
|||
6
Масянька
24.09.13
✎
11:48
|
(4) Дело не в шапке, а в Word.Tables(3) - это и есть таблица.
|
|||
7
Pereliviya
24.09.13
✎
12:07
|
не понимаю, толи я такое балбесь, то ли что?
Делаю как у вас: мWord = Новый COMОбъект("Word.Application"); мWord.Visible = 0; мNewDoc = мWord.Documents; мШаблон = СокрЛП(Строка("\\С\Отпуска.doc")); мДок = мNewDoc.Add(мШаблон, 0, 0, 1); мОбъект = мДок.Content; Для каждого СтрокаСотрудник Из СсылкаНаОбъект.РаботникиОрганизации Цикл мОбъект.Tables(3).Rows.Add(); мОбъект.Tables(3).Cell(СтрокаСотрудник.НомерСтроки,1).Range.Text = Строка(СтрокаСотрудник.Сотрудник); мОбъект.Tables(3).Cell(СтрокаСотрудник.НомерСтроки,2).Range.Text = Строка(СтрокаСотрудник.Сотрудник.Код); КонецЦикла; Все равно таже ошибка на строке мОбъект.Tables(3).Cell(): "запрашиваемый номер семейства не существует". |
|||
8
Масянька
24.09.13
✎
12:22
|
мОбъект.Tables(2) - экземпляр таблицы Word, где (2) - порядковый номер самой таблицы Word. У меня 2 таблицы, поэтому в первом случае - мОбъект.Tables(1), а во втором - мОбъект.Tables(2).
Кроме того, счетчик строк (Cell) - у меня первые 2 строки таблицы - шапка самой таблицы, поэтому Для СчетчикЦикла = 1 По Счет.КоличествоСтрок() Цикл мОбъект.Tables(1).Rows.Add(); // добавляем строку в конец таблицы Счет.ПолучитьСтрокуПоНомеру(СчетчикЦикла); мОбъект.Tables(1).Cell(СчетчикЦикла + 2,1).Range.Text = Счет.НомерСтроки; |
|||
9
Pereliviya
24.09.13
✎
12:29
|
(8) в том и проблема, что он вообще ругается на Cell(), не принимает ничего, кроме Cell(1, 1)
Даже если пишу руками Cell(2, 1) уже не работает! |
|||
10
Масянька
24.09.13
✎
13:11
|
(9) Покажи скриншот таблицы Word.
|
|||
11
Pereliviya
24.09.13
✎
13:16
|
(10) типовая форма T-6а (Приказ на отпуск)
|
|||
12
Масянька
24.09.13
✎
13:33
|
(11) Это "скриншот"? Я просила скриншота таблицы (с макета) Word.
|
|||
13
Pereliviya
25.09.13
✎
06:43
|
||||
14
BuHu
25.09.13
✎
06:57
|
(13) открой этот шаблон в ворде , включи запись макроса , сделай что тебе надо , останови запись макроса , посмотри что он туда записал
|
|||
15
Масянька
25.09.13
✎
08:18
|
(13) Нужно пробовать:
Для каждого СтрокаСотрудник Из СсылкаНаОбъект.РаботникиОрганизации Цикл мОбъект.Tables(3).Rows.Add(); мОбъект.Tables(3).Cell(СтрокаСотрудник.НомерСтроки + 2,1).Range.Text = Строка(СтрокаСотрудник.Сотрудник); мОбъект.Tables(3).Cell(СтрокаСотрудник.НомерСтроки + 2,2).Range.Text = Строка(СтрокаСотрудник.Сотрудник.Код); КонецЦикла; ИМХО, нужно подбирать. Хотя если умеешь писать макросы (14) - будет быстрее. |
|||
16
Масянька
25.09.13
✎
08:18
|
+(15) По идее - у тебя первые 2 строки таблицы - шапка.
|
|||
17
Pereliviya
25.09.13
✎
09:05
|
(15) пробовала уже так, не работает :(
|
|||
18
Масянька
25.09.13
✎
09:33
|
(17) А вообще, работа с макетом получается (ну, кроме таблицы)?
|
|||
19
Pereliviya
25.09.13
✎
10:32
|
(18) Да, получается. И пробовала в другие таблицы в макете вставлять строки, все нормуль, а в которую нужно (третью со сложной шапкой) не хочет и все.
|
|||
20
Масянька
25.09.13
✎
10:55
|
(19) Как вариант, ниже этой "сложной таблицы" вставь просто строку с нумерацией колонок и попробуй добавить в эту таблицу строки. Если получится - потом просто удалить не нужные строки и слить 2 таблицы.
Судя-по всему - шапка не нравится. |
|||
21
Юрий Юрьевич
25.09.13
✎
10:55
|
посмотри здесь http://infostart.ru/public/105132/
|
|||
22
Pereliviya
25.09.13
✎
11:00
|
(20) вот и думаю дело в шапке, но пошла по другому. Двигаю курсор, табличку конечно заполнила, но вопрос открыт, почему же Cell не срабатывает :(
Text = Word.Selection; //позицианируемся на строке таблицы Text.MoveDown(, 19); // вниз на строки Text.MoveRight(, 11); //вправо на строки Position = Text.Range(); Табл = Doc.Tables.Item(3); Для каждого СтрокаСотрудник Из СсылкаНаОбъект.РаботникиОрганизации Цикл Text.InsertRows(); //Добавляем строку Word.ActiveWindow.ActivePane.Selection.TypeText(строка(СтрокаСотрудник.Сотрудник)); Text.MoveRight(, 1); //вправо на строки Word.ActiveWindow.ActivePane.Selection.TypeText(строка(СтрокаСотрудник.Сотрудник.Код)); КонецЦикла; |
|||
23
Масянька
25.09.13
✎
11:04
|
(22) Я бы тупо перебором пробовала:
мОбъект.Tables(3).Cell(СтрокаСотрудник.НомерСтроки + 2,1).Range.Text = Строка(СтрокаСотрудник.Сотрудник); НомерСтроки + 2 (0,1,2,3,4......) Не факт, что взлетит, но я бы попробовала :) |
|||
24
Pereliviya
25.09.13
✎
11:05
|
(23) пробовала, не взлетело
|
|||
25
Pereliviya
25.09.13
✎
11:06
|
(23) спасибо за помощь и поддержку! :)
|
|||
26
Масянька
25.09.13
✎
11:09
|
А "СтрокаСотрудник.НомерСтроки" - что возвращает и какой тип?
|
|||
27
Масянька
25.09.13
✎
11:10
|
(25) Не за что (и сама такая :) ).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |