1
dka80
02.10.19
✎
17:48
|
я делал так: в тексте параметры обозначал не параметрами, а текстом с процентами. Например %Параметр1%
Далее в коде:
Object.Find.Execute("%" + Параметр + "%",,,,,,,,,Значение,2);
|
|
2
88g88
02.10.19
✎
17:54
|
Правильно понял?
Процедура ПроверкаНаСервере() экспорт
Договор = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
MSword = Договор.Получить();
MSword.Find.Execute("%" + "Параметр1" + "%",,,,,,,,,"Проверка",2);
MSWord.Application.Visible = Истина;
MSWord.Activate();
КонецПроцедуры
Ошибку показывает
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(7)}: Поле объекта не обнаружено (Find)
MSword.Find.Execute("%" + "Параметр1" + "%",,,,,,,,,"Проверка",2);
|
|
4
88g88
03.10.19
✎
13:12
|
В общем подготовить документ пришлось как описано в статье по ссылке.
Но одно но настройку делал не в обычном файле а сразу в макете 1С. Который создан как "Active document"
В статье код оптимизирован под другой тип макета в виде внешнего файла. Я создавал как внутренний макет.
Далее примерно такой код получился.
&НаСервере
Процедура ПроверкаНаСервере() экспорт
Договор = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
MSword = Договор.Получить();
Для каждого поле из MSword.Fields цикл
//Получаем Значение поля
ПолноеИмя = Поле.Code.Text;
// Ищем позицию для отчистки от лишних символов за наименование поля
ПозицияСлеша = Найти(ПолноеИмя,"\*");
// Убираем 12 символов до параметра в полном имене и 14 после
КороткоеИмя = СокрЛ(Сред(ПолноеИмя, 12, ПозицияСлеша - 14));
ЗначениеПоля = "";
// Ишем необходимый параметр и заменяем значение
Если КороткоеИмя = "Параметр1" тогда
ЗначениеПоля = "Новое значение"
КонецЕсли;
// Записываем значение если оно не пустое.
Если ЗначениеПоля <> "" Тогда
Поле.Select();
MSword.Application.Selection.TypeText(ЗначениеПоля);
КонецЕсли;
КонецЦикла;
MSWord.Application.Visible = Истина;
MSWord.Activate();
КонецПроцедуры
&НаКлиенте
Процедура Проверка(Команда) экспорт
ПроверкаНаСервере();
КонецПроцедуры
|
|