Имя: Пароль:
1C
1С v8
Не заполняет таблицу в word
0 sidalexsandr
 
03.08.18
15:18
Не заполняется таблица в word. Вот текст функции:
Функция Печать() Экспорт

Word = Новый COMОбъект("Word.Application");

//получаем макет
Макет = ПолучитьМакет("МакетWord");
ВременныйПуть = КаталогВременныхФайлов();
ИмяВременногоФайла = ВременныйПуть + "Пример ворд.doc";
Макет.Записать(ИмяВременногоФайла);
ТекДок = Word.Documents.ADD(ИмяВременногоФайла);

// Поиск и замена маркеров
Замена = ТекДок.Content.Find;

//Execute работает как замена текста, подробности метода не знаю, единственное и это точно - без цифры 2 заменяется только первый текст, вторая замена не срабатывает
//Замена.Execute("[ВставкаИз1с]",,,,,,,,, "привет 1с", 2);
Замена.Execute("%ОбществоООО%",,,,,,,,, СсылкаНаОбъект.Наименование, 2);
Замена.Execute("%ОбществоОООГенДир%",,,,,,,,, СсылкаНаОбъект.Наименование, 2);

ШаблонВорд = ТекДок;
//Заполняем первую таблицу
Если ШаблонВорд.Bookmarks.Exists("Таблица1") Тогда

//Выделяем обязательную закладку начала таблицы
ШаблонВорд.Bookmarks("Таблица1").Select();


//Перемещаемся вниз, выделяем строку таблицы и копируем ее в буфер обмена
ШаблонВорд.Application.Selection.MoveDown();
ШаблонВорд.Application.Selection.SelectRow();
ШаблонВорд.Application.Selection.Copy();

Для Счетчик = 1 По 10 Цикл

//Заменяем значения
ШаблонВорд.Application.Selection.Find.Execute("%Наим%" ,,,,,,,,,"Наим="+Счетчик,2);
ШаблонВорд.Application.Selection.Find.Execute("%Сер%" ,,,,,,,,,Счетчик+10,2);


//Перемещаемся вниз, вставляем из буфера обмена строку
ШаблонВорд.Application.Selection.MoveDown();
ШаблонВорд.Application.Selection.Paste();
//Перемещаемся вверх и выделяем строку для замены значений
ШаблонВорд.Application.Selection.MoveUp();
ШаблонВорд.Application.Selection.SelectRow();

КонецЦикла;

//Вырезаем лишнюю строку
ШаблонВорд.Application.Selection.Cut();

//Скрываем обязательную закладку начала таблицы
ШаблонВорд.Bookmarks("Таблица1").Select();
ШаблонВорд.Application.Selection.TypeText(" ");

КонецЕсли;



// Вывод документа
ТекДок.Application.Visible = Истина;
ТекДок.Activate();

Сообщить("СсылкаНаОбъект = " + СсылкаНаОбъект);


КонецФункции
1 sidalexsandr
 
03.08.18
15:18
Заполнение идет в цикле Для Счетчик = 1 По 10 Цикл
2 hhhh
 
03.08.18
15:32
(1) а зачем вы 10 раз одно и тоже? после первого раза уже "%Наим%" нет нигде, зачем еще 9 раз проходить?
3 sidalexsandr
 
03.08.18
15:34
(2) Это для проверки выводится. Дальше будет заполнено реальными данными.
4 sidalexsandr
 
03.08.18
15:36
(2) Цикл должен выводить в строки таблицы Наим=1 Наим=2 Наим=3 и так далее
5 s03
 
03.08.18
15:58
(4) или в каждой строке свой параметр (в шаблоне), не общий "Наим", а "Наим1", "Наим2" и т.д. или добавляй строки программно и в этот момент их и заполняй
6 hhhh
 
03.08.18
16:02
(4) то что данный момент у тебя, ты выводишь 10 раз Наим=1
7 sidalexsandr
 
03.08.18
16:10
(5) Я сделал на основании примера из интернета, там было написано что в каждой строчке выводится значение переменной счетчик, которое постоянно увеличивается. Как программно добавлять строки и заполнять их?
8 sidalexsandr
 
03.08.18
16:58
Подниму
9 sidalexsandr
 
06.08.18
12:57
up
10 bolobol
 
06.08.18
13:36
MSDN в помощь
11 sidalexsandr
 
06.08.18
14:50
(10) Шутиш?
12 sidalexsandr
 
06.08.18
14:54
(10) Это Микрософтоская библиотека тех документации. А мне надо знать где я программе написал с ошибкой.
13 sidalexsandr
 
06.08.18
16:32
up
14 sidalexsandr
 
07.08.18
14:03
Подниму
15 Deon
 
07.08.18
14:09
Так а что не заполняется-то? Таблица не создается или данных в ней нет?
16 sidalexsandr
 
07.08.18
14:34
(15) Таблица есть, но данных в ней нет.
Выводится только одна строчка
1    %Наим%    %Сер%
17 Deon
 
07.08.18
15:04
(16) А ты в своем шаблоне Закладку перед таблицей точно поставил?
18 sidalexsandr
 
07.08.18
15:25
(17) В документе word выделяю таблицу и правой кнопкой мыши->вставить название и даю имя Таблица 1
19 Deon
 
07.08.18
15:31
(18) Не, у тебя же в коде "ШаблонВорд.Bookmarks"
Bookmarks - это закладки. Встань перед таблицей и жамкай Вставить - Закладки. Имя закладки "Таблица 1"
20 sidalexsandr
 
07.08.18
15:43
(19) Спасибо. Теперь выдает ошибку:
Ошибка при вызове метода контекста (SelectRow): Произошла исключительная ситуация (Microsoft Word): Метод или свойство SelectRow недоступны, потому что некоторые или все объекты не ссылаются на таблицу.
21 Deon
 
07.08.18
15:45
(20) Ну вот теперь можно начинать пользоваться Отладчиком
22 sidalexsandr
 
07.08.18
15:59
(21) Можно подробнее?
23 sidalexsandr
 
07.08.18
16:01
Закомментировал //ШаблонВорд.Application.Selection.Find.Execute("%Наим%" ,,,,,,,,,"Наим="+Счетчик,2);
            //ШаблонВорд.Application.Selection.Find.Execute("%Сер%" ,,,,,,,,,Счетчик+10,2);

Все равно ошибка (20)
24 Deon
 
07.08.18
16:07
У тебя закладка должна стоять в строке над таблицей.
Ибо у тебя в коде написано - выбрать закладку, потом спуститься на строку вниз и выделить строку таблицы
25 sidalexsandr
 
07.08.18
16:09
Ошибка в верхнем SelectRow
26 Deon
 
07.08.18
16:15
(25) Потому что у тебя курсор не попал в таблицу
27 sidalexsandr
 
07.08.18
16:16
А почему не попал?
28 Deon
 
07.08.18
16:25
(27) Потому что ты закладку не туда поставил в шаблоне
29 sidalexsandr
 
07.08.18
16:30
(28) Я выделил таблицу. Далее в ворде вставка ->Закладка
30 sidalexsandr
 
07.08.18
16:31
А вот это правильно
ТекДок = Word.Documents.ADD(ИмяВременногоФайла);
ШаблонВорд = ТекДок;
//Заполняем первую таблицу

Если ШаблонВорд.Bookmarks.Exists("Таблица1") Тогда
?
31 Fram
 
07.08.18
16:32
(29) ты ветку по диагонали читаешь что ли? Что тебе в (24) написали?
32 sidalexsandr
 
07.08.18
16:36
(31) Спасибо. Попробую
33 sidalexsandr
 
07.08.18
16:39
(31) Спасибо. Заработало но не совсем верно. Выделяет и копирует не вторую строчку, а первую. Как сделать чтобы копировалась и заполнялась вторая строчка?
34 sidalexsandr
 
07.08.18
16:44
Написал ШаблонВорд.Application.Selection.MoveDown();
        ШаблонВорд.Application.Selection.MoveDown();
        ШаблонВорд.Application.Selection.SelectRow();
        ШаблонВорд.Application.Selection.Copy();

Теперь выводится с первой строки, но выводятся только нечетные строки (через строку)
35 sidalexsandr
 
07.08.18
16:46
Почему через строку? Ведь ШаблонВорд.Application.Selection.MoveDown();
        ШаблонВорд.Application.Selection.MoveDown();
        ШаблонВорд.Application.Selection.SelectRow();
        ШаблонВорд.Application.Selection.Copy();
стоит в не цикла.
36 sidalexsandr
 
07.08.18
17:24
Переформулирую. Как сделать, чтобы копировалась вторая строка таблицы затем заполнялась и добавлялась вниз таблицы?
37 sidalexsandr
 
08.08.18
11:45
Подниму
38 sidalexsandr
 
08.08.18
12:25
(36) Up
39 sidalexsandr
 
27.08.18
13:41
(36) Вопрос ещё актуален
40 sidalexsandr
 
28.08.18
10:27
(36) Подниму