Имя: Пароль:
1C
1С v8
v8: Ошибка повтороного открытия документа OpenOffice через MSScriptControl
0 zladenuw
 
23.10.12
11:29
Создаю обработку где описан этот код
//Подключение к серверу автоматизации OpenOffice
Попытка
   OpenOffice = Новый COMОбъект("com.sun.star.ServiceManager");
   
   scr = Новый COMОбъект("MSScriptControl.ScriptControl");
   scr.language = "javascript";
   
   scr.eval("MassivParametrov = new Array()");
   MassivParametrov = scr.eval("MassivParametrov");
   
   scr.AddObject("OpenOffice", OpenOffice);
   
   scr.eval("MassivParametrov[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
   scr.eval("MassivParametrov[0].Name='Hidden'");
   scr.eval("MassivParametrov[0].Value=true");
   
   scr.eval("MassivParametrovSave = new Array()");
   
   MassivParametrovSave = scr.eval("MassivParametrovSave");
   scr.eval("MassivParametrovSave[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
   scr.eval("MassivParametrovSave[0].Name='Overwrite'");
   scr.eval("MassivParametrovSave[0].Value=true");
   
    scr.eval("MassivParametrovPrint = new Array()");
   MassivParametrovPrint = scr.eval("MassivParametrovPrint");
   scr.eval("MassivParametrovSave[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
   scr.eval("MassivParametrovSave[0].Name='copycount'");
   scr.eval("MassivParametrovSave[0].Value=1");
   
   Соединение = OpenOffice.createInstance("com.sun.star.frame.Desktop");
   

Вызываю с этой обработки вот этот кусок.
Процедура ПечатьОпен(пЗаявка,ИмяФайла) Экспорт
 
   мВыбФайл = "\\1CSQL2\storage\1С\Total\ВнешниеПечатныеФормы\"+ИмяФайла;
   sUrl = URLИзИмениФайла(мВыбФайл);
   Файл = Соединение.LoadComponentFromURL(sUrl, "_blank", 0, MassivParametrov);

Но если открыл 1 раз и закрыл документ. при повторном открытие пишет, что неизвестная ошибка.
Если пересоздаю соединение все ок. что не так ?
1 zladenuw
 
23.10.12
11:43
перед печатью ищю текст, меняю его
ТекущийЛист = Файл.sheets.getByIndex(0);
           ReplaceDescriptor     = ТекущийЛист.createReplaceDescriptor();
           ReplaceDescriptor.SearchString = "code";
           ReplaceDescriptor.ReplaceString = СокрЛП(пЗаявка.Номер);
           ТекущийЛист.replaceAll(ReplaceDescriptor);

мВыбФайл = "\\1CSQL2\storage\1С\Total\Печать\"+СокрЛП(глТекущийПользователь)+ИмяФайла;
     sUrl = URLИзИмениФайла(мВыбФайл);
     Попытка
         Файл.storeAsURL(sUrl, MassivParametrovSave);
         Файл.Close(true);
         ЗапуститьПриложение(мВыбФайл);
    Исключение
         Сообщить("Такой файл уже открыт. закройте его!");
    КонецПопытки;

Тут же видно что файл закрыт. почему не дает его открыть опять :)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой