Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Выгрузить ворд шаблон и заполнить.

Выгрузить ворд шаблон и заполнить.
Я
   antihacker
 
29.11.17 - 05:44
Всем привет !

В хранилище лежит ворд файл. Мне надо выгрузить его и запонить.

Делаю так

&НаСервере
Функция ПолучитьШаблонДоговора()

    ШаблонДоговорСотрудника = Константы.ШаблонДоговорСотрудника.СоздатьМенеджерЗначения();
 
    // читаем значение

    ШаблонДоговорСотрудника.Прочитать();    
    //Сообщить(ШаблонДоговорСотрудника.Значение);

 
    // меняем значение

    ХранЗнач = ШаблонДоговорСотрудника.Значение.Получить();
    
ДвоичДанные1 = Новый ДвоичныеДанные(ХранЗнач);
Адрес = ПоместитьВоВременноеХранилище(ДвоичДанные1, УникальныйИдентификатор);

возврат Адрес;

КонецФункции

&НаКлиенте
Функция ЗаполнитьШаблонВорд()
 
    //Попытка создать COM объект

    Попытка
        ОбъектВорд = Новый COMОбъект("Word.Application"); 
    Исключение
        Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат Неопределено;
    КонецПопытки;
    
    ФайлШаблон = ПолучитьШаблонДоговора();
    
        ДвоичныеДанные = ПолучитьИзВременногоХранилища(ФайлШаблон);
  // получаем имя временного файла в локальной ФС на сервере

 
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("docx");
  // получаем файл правил для зачитки

 
    ДвоичныеДанные.Записать(ИмяВременногоФайла);
    
    //Путь к шаблону

    ОбъектВорд.Documents.Add(ИмяВременногоФайла);
    ШаблонВорд = ОбъектВорд.ActiveDocument;
     
    //Получаем все закладки из шаблона

    Для каждого ЗакладкаВорд Из ШаблонВорд.Bookmarks Цикл
        Сообщить(ЗакладкаВорд.Name);        
    КонецЦикла;
     
    //Заменяем закладку1 на текст

    ШаблонВорд.Bookmarks("DATAVIDACHI1").Select();
    ШаблонВорд.Application.Selection.TypeText("123456789");
          
    ОбъектВорд.Application.Visible = Истина;
    ОбъектВорд.Activate();
     
    //Закрытие документа

    ОбъектВорд.Application.Quit();
     
КонецФункции

Пишет -

{Документ.Проекты.Форма.ФормаДокумента.Форма(889)}: Ошибка при вызове метода контекста (Add)
    ОбъектВорд.Documents.Add(ИмяВременногоФайла);
по причине:
Произошла исключительная ситуация (Microsoft Word): Word has encountered a problem.
 
 
   antihacker
 
1 - 29.11.17 - 05:45
А загружаю так

&НаКлиенте
Процедура ЗагрузитьШаблон(Команда)
    
    #Если ВебКлиент Тогда

            Если НЕ ПодключитьРасширениеРаботыСФайлами() Тогда
                    УстановитьРасширениеРаботыСФайлами();
                    ПодключитьРасширениеРаботыСФайлами();
            КонецЕсли;    
        #КонецЕсли


        СтандартнаяОбработка=ложь;      
        Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        Диалог.Заголовок = "Выберите файл";
        Диалог.ПолноеИмяФайла = ""; 
        Фильтр = "* (*.*)|*.*"; 
        Диалог.Фильтр = Фильтр; 
        Диалог.МножественныйВыбор = Ложь;
        Диалог.Каталог = "С:\";

    ЕСЛИ Диалог.Выбрать() ТОГДА

          ПутьКФайлу = СокрЛП(Диалог.ПолноеИмяФайла);

          //Имя файла 

          //ДлинаКаталога=СтрДлина(Диалог.каталог);

          //ПолнаяДлина=СтрДлина(Диалог.ПолноеИмяФайла);

          //ИмяФайла=Прав(Диалог.ПолноеИмяФайла,ПолнаяДлина-ДлинаКаталога);  

          
                 строка= стрзаменить(ПутьКФайлу,"\", Символы.ПС); 
                 
                 ИсхИмяФайла=СтрПолучитьСтроку(строка,стрчислострок(строка));
          
          #Если НЕ ВебКлиент Тогда

          ПомещамыеФайлы = Новый Массив;
          ПомещамыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ПутьКФайлу,""));
          ПомещенныеФайлы = Новый Массив;

          Если НЕ ПоместитьФайлы(ПомещамыеФайлы,ПомещенныеФайлы,,Ложь,УникальныйИдентификатор) Тогда
                 сообщить("Ошибка прикрепление файла: " +ОписаниеОшибки());
          Иначе
                 ПрикрепитьФайлСервер(ПомещенныеФайлы);
          КонецЕсли;            
          #Иначе
        
          ПомещамыеФайлы = Новый Массив;
          ПомещамыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ПутьКФайлу,""));
          ПомещенныеФайлы = Новый Массив;

         Если НЕ ПоместитьФайлы(ПомещамыеФайлы,ПомещенныеФайлы,,Ложь,УникальныйИдентификатор) Тогда
                 сообщить("Ошибка прикрепление файла: " +ОписаниеОшибки());
              Иначе                         
                 ПрикрепитьФайлСервер(ПомещенныеФайлы,ИсхИмяФайла,Истина,вхТипИнформации);
         КонецЕсли;     
         #КонецЕсли
    
    КОНЕЦЕСЛИ;
    

КонецПроцедуры

&НаСервере
Процедура ПрикрепитьФайлСервер(Данные//  = Ложь

    
//   Если ЭтоВебКлиент Тогда

//


//        АдресПрикрепленныйФайл = Данные[0].Хранение;

//        ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресПрикрепленныйФайл);     

//    Иначе

         АдресПрикрепленныйФайл = Данные[0].Хранение;
         ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресПрикрепленныйФайл);
        // создаём и используем менеджер значений константы напрямую

        
    ШаблонДоговорСотрудника = Константы.ШаблонДоговорСотрудника.СоздатьМенеджерЗначения();
 
    // читаем значение

    ШаблонДоговорСотрудника.Прочитать();    
    //Сообщить(ШаблонДоговорСотрудника.Значение);

 
    // меняем значение

    ШаблонДоговорСотрудника.Значение = 
    Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресПрикрепленныйФайл),Новый СжатиеДанных(9));;
 
    // записываем значение

    ШаблонДоговорСотрудника.Записать();
    //

    //МенеджерЗаписи.ДвоичныеДанныеФайла=Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(ТекСтрока.АдресВременногоХранилища),Новый СжатиеДанных(9));

    

КонецПроцедуры
   Mankubus
 
2 - 29.11.17 - 06:19
Конфа на бсп?
   antihacker
 
3 - 29.11.17 - 06:43
самописная
   antihacker
 
4 - 29.11.17 - 07:37
Темиа закрыта. решил вот так.

&НаСервере
Функция ПолучитьШаблонДоговора()

    ШаблонДоговорСотрудника = Константы.ШаблонДоговорСотрудника.СоздатьМенеджерЗначения();
 
    // читаем значение

    ШаблонДоговорСотрудника.Прочитать();    
    //Сообщить(ШаблонДоговорСотрудника.Значение);

 
    // меняем значение

    ХранЗнач = ШаблонДоговорСотрудника.Значение.Получить();
    
    //ДвоичДанные1 = Новый ДвоичныеДанные(ХранЗнач);

    //Адрес = ПоместитьВоВременноеХранилище(ДвоичДанные1, УникальныйИдентификатор);


    возврат ХранЗнач;

КонецФункции

&НаКлиенте
Функция ЗаполнитьШаблонВорд()
 
    //Попытка создать COM объект

    Попытка
        ОбъектВорд = Новый COMОбъект("Word.Application"); 
    Исключение
        Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат Неопределено;
    КонецПопытки;
    
    ФайлШаблон = ПолучитьШаблонДоговора();
    
    //ДвоичныеДанные = ПолучитьИзВременногоХранилища(ФайлШаблон);

    // получаем имя временного файла в локальной ФС на сервере

 
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc");
    // получаем файл правил для зачитки    

    
    ФайлШаблон.Записать(ИмяВременногоФайла);
    
    сообщить(ФайлШаблон);
    
    //Путь к шаблону

    ОбъектВорд.Documents.Add(ИмяВременногоФайла);
    ШаблонВорд = ОбъектВорд.ActiveDocument;
     
    //Получаем все закладки из шаблона

    Для каждого ЗакладкаВорд Из ШаблонВорд.Bookmarks Цикл
        Сообщить(ЗакладкаВорд.Name);        
    КонецЦикла;
     
    //Заменяем закладку1 на текст

    ШаблонВорд.Bookmarks("DATAVIDACHI1").Select();
    ШаблонВорд.Application.Selection.TypeText("123456789");
          
    ОбъектВорд.Application.Visible = Истина;
    ОбъектВорд.Activate();
     
    //Закрытие документа

    ОбъектВорд.Application.Quit();
     
КонецФункции


Но и это не работала пока 
Это
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("docx");
не поменял на это 

    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc");

Почему ? Ведь на клиенте Оффис 2007, а не  2003 !

НЕ могу понять !
   antihacker
 
5 - 29.11.17 - 08:17
По ходу  ОбъектВорд.Documents.Add(ИмяВременногоФайла);
для 2007 выглядит по другому. Ведь на это ругаеться когда когда применен ПолучитьИмяВременногоФайла("docx");

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует