Имя: Пароль:
1C
1С v8
Подмена текста в шблонах договора world 1с 8
0 Aleksandr_
Nikonov
 
09.02.16
23:00
Всем привет.
В общем не понятная ошибка в интернете нечего не нашел (покрайней мере понятного для меня :-) )

на локальном компьютере данный код работает и окрывает документ более того он подменяет текст :-)

а вот на на сервере 2003 не работает выдает ошибку

{Справочник.Договора.Форма.ФормаЭлемента.Форма(141)}: Ошибка при вызове метода контекста (Bookmarks)
    ШаблонВорд.Bookmarks("Закладка1").Select();
по причине:
Произошла исключительная ситуация (Microsoft Word): Запрашиваемый номер семейства не существует.

вот сам код

//Попытка создать COM объект
    Попытка
        ОбъектВорд = Новый COMОбъект("Word.Application");
    Исключение
        Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат Неопределено;
    КонецПопытки;
    
    //Путь к шаблону
    ОбъектВорд.Documents.Add("D:\1cbases\1с8\Хвалана\ExtForms\Docprn\шаблон.docx");
    ШаблонВорд = ОбъектВорд.ActiveDocument;
    
    //Получаем все закладки из шаблона
    Для каждого ЗакладкаВорд Из ШаблонВорд.Bookmarks Цикл
        Сообщить(ЗакладкаВорд.Name);        
    КонецЦикла;
    
    //Заменяем закладку1 на текст
    ШаблонВорд.Bookmarks("Закладка1").Select();
    ШаблонВорд.Application.Selection.TypeText("Привет первый текст");
    
    //Заменяем закладку2 на текст
    ШаблонВорд.Bookmarks("Закладка2").Select();
    ШаблонВорд.Application.Selection.TypeText("Пока второй текс");
    
    //Заменяем закладку3 на текущую дату
    ШаблонВорд.Bookmarks("Закладка3").Select();
    ШаблонВорд.Application.Selection.TypeText(ТекущаяДата());
    
    ОбъектВорд.Application.Visible = Истина;
    ОбъектВорд.Activate();
    
    //Закрытие документа
    //ОбъектВорд.Application.Quit();
1 Aleksandr_
Nikonov
 
09.02.16
23:01
помогите пожалуйста не знаю как исправить и что (
2 Cyberhawk
 
09.02.16
23:41
Нету у тебя в документе, с которым работает серверный Ворд, среди закладок Bookmarks закладки с именем "Закладка1"
Либо твой Ворд он не умеет обращаться к закладкам по имени
3 Cube
 
10.02.16
05:20
(0) Заполнять шаблон через закладки... А почему не делаешь как все нормальные люди через фигурные/квадратные/треугольные скобки?
4 dGU
 
10.02.16
08:03
MsWord.Documents.Open(ПолныйПутьКНовомуФайлу, Истина);
        MsWord.Application.Visible = 0;    
        
        Документ = MsWord.Documents(1);
        Документ.Activate();
        
        Для Каждого ЭлементСтруктуры Из ПараметрыПечати Цикл
            
            Замена = Документ.Content.Find;
            Замена.Execute(Строка(ЭлементСтруктуры.Ключ // - имя параметра для замены), Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ЭлементСтруктуры.Значение) // - значение замены, 2);    
            
        КонецЦикла;    
        
        MsWord.Application.Visible = 1;
        Документ.SaveAs(ПолныйПутьКНовомуФайлу);
        MsWord.Documents.Open(ПолныйПутьКНовомуФайлу, Истина);
5 ЧеловекДуши
 
10.02.16
08:37
(0) На сервере Офис поставь 2003.
Удали офис 2007 :)

+ Ты насчет сервера, проверь. Бывает что там другая версия :)
К примеру 2010
6 Aleksandr_
Nikonov
 
10.02.16
10:14
версии офиса одинаковые различия только в винде и в версиях 1с локально стоит 8.3.6.2299
а на сервере стоит 8.2.17.143

может в этом проблема?
7 Aleksandr_
Nikonov
 
10.02.16
10:56
(4) спасибо вроде заработало но все таки по каким причинам не работал мой код?
8 Aleksandr_
Nikonov
 
10.02.16
22:30
Ребята теперь другая ситуация ))
Как выбирать шаблон по одному пути и сохранять новый документ в другом пути?

на форме справочника уже есть реквизит пути договора из константы я получаю путь к шаблону
помогите решить как выбирать шаблон и затем сохранять полученный договор в директории выбранной пользователем?

вот код что получился у меня

Функция ЗаполнитьШаблонВорд()
    MsWord = Новый COMОбъект("Word.Application");
    ПолныйПутьКНовомуФайлу = "D:\1cbases\1с8\Хвалана\ExtForms\Docprn\шабл.docx";
    MsWord.Documents.Open(ПолныйПутьКНовомуФайлу, Истина);
        MsWord.Application.Visible = 0;    
        
        Документ = MsWord.Documents(1);
        Документ.Activate();
        
        Для Каждого ЭлементСтруктуры Из ЭтаФорма.РедактируемыеПараметры Цикл
            Замена = Документ.Content.Find;
            Замена.Execute(Строка(ЭлементСтруктуры.Представление), Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ЭлементСтруктуры.Значение), 2);                                
       КонецЦикла;    
        
        MsWord.Application.Visible = 1;
        Документ.SaveAs(ПолныйПутьКНовомуФайлу);
        MsWord.Documents.Open(ПолныйПутьКНовомуФайлу, Истина);
КонецФункции
9 Aleksandr_
Nikonov
 
10.02.16
22:50
Всем спасибо тема закрыта сам разобрался
    MsWord = Новый COMОбъект("Word.Application");
    ПолныйПутьКНовомуФайлу = ПутьКФайлуДоговра+"\договор номер"+""+ЭтаФорма.НомерДоговора+""+".docx";
    ПолныйПутьКФайлуШаблона = ПутьКФайлуШаблону;
    MsWord.Documents.Open(ПолныйПутьКФайлуШаблона, Истина);
        MsWord.Application.Visible = 0;    
        
        Документ = MsWord.Documents(1);
        Документ.Activate();
        
        Для Каждого ЭлементСтруктуры Из ЭтаФорма.РедактируемыеПараметры Цикл
            Замена = Документ.Content.Find;
            Замена.Execute(Строка(ЭлементСтруктуры.Представление), Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ЭлементСтруктуры.Значение), 2);                                
       КонецЦикла;    
        
        MsWord.Application.Visible = 1;
        Документ.SaveAs(ПолныйПутьКНовомуФайлу);
        MsWord.Documents.Open(ПолныйПутьКНовомуФайлу, Истина);