Имя: Пароль:
1C
1С v8
Убить процесс EXCEL.EXE через com
0 Tateossian
 
08.05.14
11:55
Господа! Делаю вот так (Excel - com-сервер экселя):

    Если Excel <> Неопределено Тогда
        
        Excel.Application.Quit();

        Excel = Неопределено;
        
    КонецЕсли;

Excel так и остается в процессах. ЧЯДНТ?
1 Сергиус
 
08.05.14
11:59
(0) Возможно это тот процесс, который был открыт до этого..
2 Чайник Рассела
 
08.05.14
12:00
Excel.DisplayAlerts = 0;
Excel.Quit();
3 Сергиус
 
08.05.14
12:00
+(1)Поубивай все вручную..и проверь еще раз)
4 koreav
 
08.05.14
12:00
ExcelApplication.Application.Quit();                 
ExcelApplication = Неопределено;
            
COMОбъект = ПолучитьCOMОбъект(ПутьКФайлу);
COMОбъект.Close();
5 Tateossian
 
08.05.14
12:15
(3) Юзер жалуется, что это неудобно (у него несколько экселей может быть запущено и может кильнуть нужный). А так, я предложил:3
6 Tateossian
 
08.05.14
12:16
(1) Я на одном тестировал процессе.
7 Tateossian
 
08.05.14
12:25
(4) Ха, прикольно. Выдает предупреждение "Сервер занят": действие не может быть завершено, так как другая программа занята...
8 Tateossian
 
08.05.14
12:37
Комрады, нужна подсказка куда копать.
9 Сергиус
 
08.05.14
12:50
(8) вообщем тебе надо сделать неопределенным не только само СOM соединение, но и все объекты, которые ты получал через него. Пример:

Попытка
   Коннектор = Новый COMОбъект("V82.COMConnector");
     Соединение = Коннектор.Connect("Usr=Имя;Pwd=Пароль;Srvr=Сервер;Ref=база;");

    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
Запрос = Соединение.NewObject("Запрос");

Чтобы все прибить, надо:

Запрос = "";
Коннектор = "";

Именно в таком порядке... Сначала все объекты, которые создал через COM, в самом конце Коннектор
10 Maxus43
 
08.05.14
12:57
Excel.Application юзаешь же? юзай COMConnector
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.