Имя: Пароль:
1C
 
В вордовском шаблоне не заполняет данные
0 peace
 
11.01.16
11:56
Пытаюсь сделать замену в вордовском шаблоне дополнительного соглашения. Из табличной части документа беру сотрудников, заменяю данные по ним в ворде.. Вывод всех доп соглашений делаю в один документ. Получается так, что все макеты в документ выводятся, но замены не происходят. Помогите розобраться в чем может быть причина плз..
Код прилагаю:
    Попытка
        Договор = ПолучитьМакет("Макет");
        ОбъектWord = Договор.Получить();
        Word = ОбъектWord.Application;
        ДокументWord = Word.Documents(1);
        ДокументWord.Activate();
        Word.Selection.WholeStory();
        Word.Selection.Copy();
        Счетчик = 1;
        Для каждого ТДстр Из СсылкаНаОбъект.РаботникиОрганизации Цикл
            СоздатьИЗаполнитьТЗподстановок(ТДстр.Сотрудник);    
            Для Каждого Стр ИЗ ТЗп Цикл
                ПоискИЗаменаВВорде(ДокументWord,Стр.Шаблон,Стр.СтрокаЗамены);        
            КонецЦикла;
            Word.Selection.EndKey(6);
            Если Счетчик < СсылкаНаОбъект.РаботникиОрганизации.Количество() тогда
                Word.Selection.InsertBreak(7);
                Word.Selection.Paste();
            КонецЕсли;
            Счетчик = Счетчик + 1;
        КонецЦикла;
        ОбъектWord.Application.Visible=Истина;
        ОбъектWord.Activate();
    Исключение
        Сообщить(ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
        Word.Quit();
        Возврат Неопределено;
    КонецПопытки;
1 Godofsin
 
11.01.16
12:00
ПоискИЗаменаВВорде(ДокументWord,Стр.Шаблон,Стр.СтрокаЗамены); Вот эту процедуру покажи для начала и проверь ТЗп
2 peace
 
11.01.16
14:10
(1) код функции..
Функция ПоискИЗаменаВВорде(ОбъектВорд,знач ТекстПоиска = "",знач ТекстЗамены = "",ЗаменитьВсе = Истина)
    
    Для н = 1 по 3 цикл
    
    Замена=ОбъектВорд.Content.find;
    Замена.Execute(ТекстПоиска,Ложь,Истина,Ложь,,,Истина,,Ложь,ТекстЗамены);

    КонецЦикла;
    
    возврат истина;
    
    ДляВозврата = Ложь;
    
    ТекстЗамены = Строка(ТекстЗамены);
    ТекстПоиска = Строка(ТекстПоиска);
    Если ПустаяСтрока(ТекстПоиска) И ПустаяСтрока(ТекстЗамены) Тогда
        Возврат    ДляВозврата;    
    КонецЕсли;
    ПродолжитьЦикл = Истина;
    Пока ПродолжитьЦикл Цикл
        Если НЕ ЗаменитьВсе Тогда
            ПродолжитьЦикл = Ложь;            
        КонецЕсли;
        ОбъектВорд.Selection.Collapse();
        ОбъектВорд.Selection.Find.Forward = True;
        ОбъектВорд.Selection.Find.Text = ТекстПоиска;
        Если ОбъектВорд.Selection.Find.Execute() Тогда
            ОбъектВорд.Selection.Delete();
            ОбъектВорд.Selection.InsertAfter(ТекстЗамены);            
            ДляВозврата = Истина;
        Иначе
            ОбъектВорд.Selection.Find.Forward = False;
            Если ОбъектВорд.Selection.Find.Execute() Тогда
                ОбъектВорд.Selection.Delete();
                ОбъектВорд.Selection.InsertAfter(ТекстЗамены);
                ДляВозврата = Истина;
            Иначе
                ПродолжитьЦикл = Ложь;
                ДляВозврата = Ложь;            
            КонецЕсли            
        КонецЕсли;    
        ОбработкаПрерыванияПользователя();
    КонецЦикла;
    
    Возврат ДляВозврата;
    
КонецФункции

Она у меня для одностраничного документа работала, сейчас посмотрю еще тзп
3 peace
 
12.01.16
06:00
(1) Спасибо за помощь, нашел в чем проблема..
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс