Имя: Пароль:
1C
1С v8
Работа с OpenOffice Writer
0 VigerV
 
19.06.12
15:54
Проблема: есть документ в нем табличный документ, установлен только OpenOffice. При этом цель сохранить документ в doc формате. Возникло две проблемы первая, при построчном чтении текст переносится без форматирования, и вторая не происходит сохранения вылетает при установке фильтра для сохранения в формате MS Word. Может кто подскажет как решить:

   scr=Новый COMОбъект("MSScriptControl.ScriptControl");
   scr.language="javascript";
   scr.eval("Massiv=new Array()");
   Massiv=scr.eval("Massiv"); //создали массив на ява
   ServiceManager=Новый COMОбъект("com.sun.star.ServiceManager");
   Scr.AddObject("ServiceManager",ServiceManager);
   Desktop=ServiceManager.createInstance("com.sun.star.frame.Desktop"); //сом объект
   
   Попытка
       Document=Desktop.LoadComponentFromURL("private:factory/swriter","_blank",0, Massiv ); //новый документ
   Исключение
       Сообщить("Ошибка создания нового документа");
   КонецПопытки;
   
   Для НомерСтроки = 1 По ПечатнаяФорма.ВысотаТаблицы Цикл
           //установка позиции в конец документа
           Xrange = Document.getText().getEnd();
           // вставка строки
           Document.getText().insertString(Xrange, ПечатнаяФорма.ПолучитьОбласть(НомерСтроки, 1, НомерСтроки, ПечатнаяФорма.ШиринаТаблицы).ТекущаяОбласть.Текст, false);    
   КонецЦикла;
   
       
   
   ИмяФайлаСообщения = Путь + ИмяФайла +"."+ТипФайла;
   Попытка
        SaveParam        = scr.Eval("ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
        SaveParam.Name    = "FilterName";
       SaveParam.Value    = "Ms Word 97";
       scr.CodeObject.SetItem(0, SaveParam);
        Document.storeToURL(ПреобразоватьВURL(ИмяФайлаСообщения), Massiv);
       Document.dispose();
       Сообщить("Файл " + ИмяФайлаСообщения + " успешно сохранен");
         
   Исключение
          Сообщить("Ошибка сохранения документа");
          Сообщить(ОписаниеОшибки());
         
      КонецПопытки;

альтернатинвый способ наложения фильтра для формата тоже не работает:
    scr.eval("Massiv[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
       scr.eval("Massiv[0].Name='FilterName'");
       scr.eval("Massiv[0].Value='Ms Word 97'");
       Document.storeToURL(ПреобразоватьВURL(ИмяФайлаСообщения), Massiv);
1 VigerV
 
20.06.12
11:28
Неужели никто не знает?
2 VigerV
 
21.06.12
10:31
При использовании второго метода наложения фильтра вылетает ошибка:
Ошибка при вызове метода контекста (storeToURL): Произошла исключительная ситуация ([automation bridge] ): com.sun.star.task.ErrorCodeIOException:

scr.eval("Massiv[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
       scr.eval("Massiv[0].Name='FilterName'");
       scr.eval("Massiv[0].Value='Ms Word 97'");
       Document.storeToURL(ПреобразоватьВURL(ИмяФайлаСообщения), Massiv);
3 Kreont
 
21.06.12
10:38
1с 8-ая вроде позволяет в док сохранить сразу, не?
4 VigerV
 
21.06.12
13:38
Без установленного MS Office нет.
5 andrewks
 
21.06.12
13:51
(4) враньё
6 VigerV
 
21.06.12
16:58
При попытке сохранения стандартным методом табличного документа в docx вылетает с дампом. С остальными форматами проблем нет.