Тут в стартовой теме изначально неправильно шаблон сделан, потому и решение такое сложное.
Точки входа в документе MS Word надо описать через коллекцию Fields с типами полей = wdFieldDocVariable. После этого можно будет извне применять такой программный ход, который проставит значения везде сразу:
Document.Variables("НомерДоговора").Value = "123456"
Document.Variables("Должность").Value = "Директор"
Document.Fields.Update
Более подробное описание Fields.
Очень нужна помощь.
Пытаюсь найти и заменить текст в вордовском документе... Но у меня находит ттолько первую замену.
Есть подозрение, что после первой замены, программа ищет следующие в первой же замене, а не просматривает весь документ...
Помогите, плиз....
Функция НайтиТекст(Ф,Текст,Замена)
Ф.Selection.Find.ClearFormatting();
Ф.Selection.Find.Text=Текст;
Ф.Selection.Find.Forward=1;
Если Ф.Selection.Find.Execute()=0 Тогда
Возврат(0);
Иначе
Возврат(1);
КонецЕсли;
КонецФункции
//*******************************************
Процедура Показать()
ФайлШаблона = ""+БД+"Samples\"+ШаблоныДоговоров.ПолучитьЗначение(ШаблоныДоговоров.ТекущаяСтрока());
Ф = СоздатьОбъект("Word.Application");
Ф.Documents.Add(ФайлШаблона);
Если НайтиТекст(Ф,"{НомерДоговора}")=1 Тогда
Ф.Selection.Find.Text = СокрЛП(НомерДоговора);
КонецЕсли;
Если НайтиТекст(Ф,"{Должность}")=1 Тогда
Ф.Selection.Find.Text = Должность.ПолучитьЗначение(Должность.ТекущаяСтрока());
КонецЕсли;
Если НайтиТекст(Ф,"{ДатаДоговора}")=1 Тогда
Ф.Selection.Find.Text = СокрЛП(ДатаДоговора);
КонецЕсли;
//заменяем переменные
Ф.Visible = 1
КонецПроцедуры //Показать()
ТаблицаЗамен = СоздатьОбъект("ТаблицаЗначений");
Для x=1 По 3 Цикл
ТаблицаЗамен.НоваяСтрока();
КонецЦикла;
ТаблицаЗамен.НоваяКолонка("Найти" , ,,, "Найти слово");
ТаблицаЗамен.НоваяКолонка("Заменить", ,,, "Заменить на...");
// Что надо
ТаблицаЗамен.УстановитьЗначение(1,1,"{Номер}");
ТаблицаЗамен.УстановитьЗначение(2,1,"{Дата}");
ТаблицаЗамен.УстановитьЗначение(3,1,"{Сотр}");
// На что
ТаблицаЗамен.ВыбратьСтроки();
Пока ТаблицаЗамен.ПолучитьСтроку() = 1 Цикл
Fnd.Execute(ТаблицаЗамен.Найти,,,,,,,,, ТаблицаЗамен.Заменить, 2);
КонецЦикла;
WordApp.ActiveWindow.View.Type = 4; // Режим только просмотра WordApp.Visible =1;