Имя: Пароль:
1C
1С v8
Печать из 1С в Word с помощью замены
0 Death_eye
 
20.08.17
06:39
Внешняя обработка. С помощью замены заполняется документ Word. Код типовой (запросы по выборке не пишу):

Справка = ПолучитьМакет("ПФ_DOC_СправкаСМестаРаботы");
MSWord = Справка.Получить();

Попытка
    Документ = MSWord.Application.Documents(1);
    Документ.Activate();
        Замена = Документ.Content.Find;
        Замена.Execute("#ФИОПолные#", Ложь, Истина, Ложь, , , Истина, , Ложь, "Иванова ИИ");
    Замена.Execute("#ЖенскийПол#", Ложь, Истина, Ложь, , , Истина, , Ложь, "а");
    Замена.Execute("#ДатаДок#", Ложь, Истина, Ложь, , , Истина, , Ложь, 4);

        MSWord.Application.Visible = Истина;
    MSWord.Activate();
        
Исключение
    Сообщить(ОписаниеОшибки());
    MSWord.Application.Quit();
КонецПопытки;

Но в документе заменяется только ФИО и все. Т.е. только первая замена делается и больше ничего. Подскажите, плз, где ошибка.
1 DJ Anthon
 
20.08.17
07:23
ThisDocument.Content.Find.Execute(Строка, Истина, Истина, Ложь, Ложь, Ложь, Истина, wdFindContinue, Ложь, ПодСтрока, wdReplaceAll);
                ThisDocument.Sections(1).Headers(1).Range.Find.Execute(Строка, Истина, Истина, Ложь, Ложь, Ложь, Истина, wdFindContinue, Ложь, ПодСтрока, wdReplaceAll);
                ThisDocument.Sections(1).Footers(1).Range.Find.Execute(Строка, Истина, Истина, Ложь, Ложь, Ложь, Истина, wdFindContinue, Ложь, ПодСтрока, wdReplaceAll);
                КолВоНадписей = ThisDocument.Shapes.Count;
                Для СчетчикЦикла = 1 По КолВоНадписей Цикл
                    Если Число(ThisDocument.Shapes.Item(СчетчикЦикла).Type) = 17 Тогда
                        ThisDocument.Shapes.Item(СчетчикЦикла).TextFrame.TextRange.Find.Execute(Строка, Истина, Истина, Ложь, Ложь, Ложь, Истина, wdFindContinue, Ложь, ПодСтрока, wdReplaceAll);
                    КонецЕсли;
                КонецЦикла;            


Строка меняется на Подстрока
2 DES
 
20.08.17
08:24
а попробуй Замена = Документ.Content.Find;
перед каждым
Замена.Execute()
3 Death_eye
 
20.08.17
08:59
(2) Да, так работает.
4 Death_eye
 
20.08.17
08:59
Теперь другая проблема - подключаю как ВПФ к ЗУП 3.1
Выдает ошибку - "не сформирована печатная форма"
5 DES
 
20.08.17
09:12
(4) ну тут сорри, я больше по самопискам.
6 v1perok
 
22.08.17
09:54
7 Базис
 
naïve
22.08.17
10:07
Почитай про параметры .Execute, один из них определяет - заменить первый найденный или все.
8 sepu
 
22.08.17
10:15
наркоманство какоекто, в докумене ворда расставляешь закладки(bookmark) на все слова которые надо заменить а потом просто пишешь для каждого букмарка из worddoc.bookmarks цикл букмарка.Range().Text = "" + соответствиезначенийименамбукмарок[букмарка.name]; конеццикла
9 emuradov
 
22.08.17
10:33
У тебя параметр замены не проставлен, попробуй так:
Замена.Execute("["+СокрЛП(Колонка.Имя)+"]",,,,,,,,, Формат(стр[Колонка.Имя],"ДЛФ=Д"), 2)
10 Вафель
 
22.08.17
10:35
(8) С таблицами так не прокатит
11 sepu
 
22.08.17
10:37
(10) при чем тут таблицы, к таблицам по индексам обращаешься и рисуешь как в экселе