|
Как закрыть 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)спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |