Имя: Пароль:
1C
1С v8
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) Не за что (и сама такая :) ).
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.