Имя: Пароль:
1C
1С v8
Как закрыть open ofice
,
0 hohol
 
14.03.12
23:28
открываю
Приложение      = Новый ComОбъект("com.sun.star.ServiceManager");
   scr             = Новый ComОбъект("MSScriptControl.ScriptControl");    
   scr.language    = "javascript";
   scr.eval("MassivParametrov = new Array()");
   MassivParametrov = scr.eval("MassivParametrov");
   scr.AddObject("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");
   
   Desktop = Приложение.CreateInstance("com.sun.star.frame.Desktop");
   Doc = Desktop.LoadComponentFromURL(ConvertToURL(ПутьКФайлу), "_blank", 0, MassivParametrov);
   
   Sheets = Doc.GetSheets();;
   Документ = Sheets.GetByIndex(НомерЛиста - 1);

Все нормально, но потом висеть временный файл остается с расширением
.xls#

эксперименты типа
приложение = Неопределено;
и Приложение.close()
привели к тому, что теперь он жутко глючит.
1 Чайник Рассела
 
14.03.12
23:40
Эксель.Quit();
2 hohol
 
14.03.12
23:41
(1) Ты крут.
3 Чайник Рассела
 
14.03.12
23:42
(2) ето сарказм?
4 hohol
 
14.03.12
23:44
(3) кажись потребление нотропина даром не прошло. ;)
у тебя не только голову отшибло, но и чувство юмора.
5 vde69
 
14.03.12
23:48
перед закрытием нужно все переменные имеющие значение COM обнулить
6 hohol
 
14.03.12
23:49
(5) Да обнулял вроде все ком объекты. Команда закрытия какая? я наугад close написал.
7 vde69
 
14.03.12
23:50
(5)+
делательно в обратном создани порядке

Документ Sheets Doc Desktop MassivParametrov

и так далее
8 vde69
 
14.03.12
23:52
не забудь внутри скрипта обнулить

scr.eval("MassivParametrov[0]=0")
9 hohol
 
14.03.12
23:54
блин. проще файл удалить
10 hohol
 
14.03.12
23:54
одной строкой.
11 vde69
 
14.03.12
23:56
(9) у тебя типичная утечка памяти в скипте, ты в процессах посмотри по идее у тебя процесс не закрытый висит, а тормозит по тому что при эксперементах их там уже куча
12 hohol
 
14.03.12
23:59
(11) не, не тормозит. То я его в вечный цикл отправил забыл счетчик прибавить :)
13 hohol
 
15.03.12
00:06
написал
в конце
scr.eval("MassivParametrov = 0");
scr = Неопределено;
Приложение = Неопределено;

Но процессы так и висят и временный файл тоже. Еще что обнулить?
14 hohol
 
15.03.12
00:07
Ну и должна же быть команда закрытия.
15 hohol
 
15.03.12
00:12
вообще все переменные обнулил в обратном порядке, так и висят процессы.
зы
А как их 1с процессы прибить? :)))
16 hohol
 
15.03.12
00:12
так и знал, что с ОО какая нибудь камасутра получится.
17 vde69
 
15.03.12
00:15
поищи там скорее всего висит вопрос типа "сохранить файл?" но форма скрыта
в екселе закрытие делается то-же хитро

Процедура EXCEL_РазорватьСвязь (Соответстие) Экспорт
   Попытка
       Соответстие["EXCEL"].DisplayAlerts = 0;
       Соответстие["ExcelФайл"].Close();
       Соответстие["EXCEL"].DisplayAlerts = 1;
       Соответстие["EXCEL"].Quit();
       Соответстие["EXCEL"] = Неопределено;
   Исключение
       #Если Клиент Тогда
           Сообщить(ОписаниеОшибки());
       #КонецЕсли
   КонецПопытки;                  
КонецПроцедуры


http://infostart.ru/public/57401/
18 hohol
 
15.03.12
00:29
(17) спасибо конечно. Но, с экселем все в поряде. Как ОО закрыть?
19 DS
 
15.03.12
00:49
Приложение = Неопределено;
Doc.close(true);
Desktop.terminate();

?
20 hohol
 
15.03.12
00:51
(19) ДА!
21 hohol
 
15.03.12
00:51
+(20)спасибо!