Имя: Пароль:
1C
1С v8
Событие Закрытие приложение excel из 1с
0 smileeg
 
05.03.12
12:47
Может быть кто-нибудь сталкивался с чем-то подобным?

Нужно отловить событие закрытия приложения MS Excel.
Нашла только событие ПередЗакрытием книги.

Добавляю обработчик:
       
ДобавитьОбработчик Excel.WorkbookBeforeClose, ПередЗакрытиемДокумента;

Потом в процедуре выполняю следующий код:

Процедура ПередЗакрытиемДокумента(Документ, Отмена)
   
   // Удалить обработчик закрытия документа
   УдалитьОбработчик Excel.WorkbookBeforeClose, ПередЗакрытиемДокумента;
   
   Документ.Close();
   
   Excel.Application.Quit();// завершаем процесс Excel
   Excel = Неопределено;
   
   // Удалить временный файл
   УдалитьФайлы(ИмяФайла);
   
   ИмяФайла = Неопределено;
   
КонецПроцедуры

И возникает следующая проблема: когда я закрываю приложение, то закрывается книга, удаляется временный файл, очищаются значения переменных, но приложение остаётся открытым. при этом если я закрываю книгу процедура выполняется с закрытием приложения.

Помогите, пожалуйста.
1 Cube
 
05.03.12
12:57
У меня в Word работает так:

&НаКлиенте
Процедура ОткрытьМакетДляРедактирования(Команда)
   
   ...
   
   Попытка
       MSWord = ПолучитьCOMОбъект(, "Word.Application");    //Если Word уже открыт, то покажем предупреждение - нефиг десять документов редактировать.
       Предупреждение("Для редактирования макета, закройте другие документы Microsoft Word.");
       Возврат;
   Исключение
       Попытка
           MSWord = Новый COMОбъект("Word.Application");    //Открываем Word.
       Исключение
           Сообщить("Ошибка при открытии макета. Скорее всего на Вашем компьютере не установлен Microsoft Word.", СтатусСообщения.Внимание);
           Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
           Возврат;
       КонецПопытки;
   КонецПопытки;
   Документ = MSWord.Documents.Open(КаталогВременныхФайлов() + Объект.ИмяФайлаМакета);
   MSWord.Visible = Истина;
   MSWord.Activate();
   
   ДобавитьОбработчик MSWord.DocumentBeforeClose, ПередЗакрытиемДокументаWord;
   ДобавитьОбработчик MSWord.Quit, ВыходИзWord;
   
КонецПроцедуры //ОткрытьМакетДляРедактирования()

&НаКлиенте
Процедура ПередЗакрытиемДокументаWord(Документ, Отмена)
   
   Если НЕ Документ.Saved Тогда
       Документ.Save();
       Модифицированность = Истина
   КонецЕсли;
   
КонецПроцедуры //ПередЗакрытиемДокументаWord()
2 Cube
 
05.03.12
12:58
+(1) Забыл:

&НаКлиенте
Процедура ВыходИзWord()
   
   ...
   
   УдалитьФайлы(КаталогВременныхФайлов() + Объект.ИмяФайлаМакета);
   
КонецПроцедуры //ВыходИзWord()
3 smileeg
 
05.03.12
13:08
я уже нашла выход из положения) вдруг кому понадобится)

перед закрытием книги excel активизирую само приложение

   Excel.Activate();

//спасибо за помощь//
4 smileeg
 
05.03.12
13:15
не... не получилось. эксель закрывает и не убивает процесс и не удаляет временный файл... ЭХЪ(
5 Cube
 
05.03.12
13:20
(4) А что Excel.DocumentBeforeClose не работает?
6 ЧеловекДуши
 
05.03.12
13:20
Excel.Application.Close();
7 ЧеловекДуши
 
05.03.12
13:21
А вообще, странно это все, так то 8-ка неплохо и свои отчетики переводит в ексель.
8 Cube
 
05.03.12
13:21
(6) Цитирую "Нужно отловить событие закрытия приложения MS Excel."
9 ЧеловекДуши
 
05.03.12
13:22
(8)(0)>>> Нужно отловить событие закрытия приложения MS Excel.
Бред, зачем, что хочет автор от этого получить?
Зачем себе придумывать грабли?
10 Cube
 
05.03.12
13:22
(7) Ну так попробуй в шапке договора наименование организации, наименование контрагента и слова "Заказчик" и "Исполнитель" выдели жирным шрифтом... То-то и оно...
11 smileeg
 
05.03.12
13:25
(5) - работает
12 ЧеловекДуши
 
05.03.12
13:25
(10)Вы просто не умеете Это готовить ;)
Ексель, он и в 8-ке и в 7-ке Екселем останется.
13 Cube
 
05.03.12
13:25
(12) Ты не в теме, проходи мимо.
14 smileeg
 
05.03.12
13:26
(9) - для того, чтобы при закрытии экселя у меня удалялись временные файлы созданные 1с.
15 Cube
 
05.03.12
13:26
(11) Задача решена? :)
16 smileeg
 
05.03.12
13:27
(5) только заметила что там Document... ща попробую... а то у меня Workbook? или Document это для Word?
17 Cube
 
05.03.12
13:29
(16) Так вот и проверь :)
18 smileeg
 
05.03.12
13:29
(6) - у приложения Excel нет метода Close()
19 smileeg
 
05.03.12
13:31
(17) - Событие объекта не обнаружено (DocumentBeforeClose)
вотъ так неудачка.
20 smileeg
 
05.03.12
13:32
всё потому что у excel не документы, а книги
21 Cube
 
05.03.12
13:38
А так:

ДобавитьОбработчик Excel.Quit, ВыходИзExcel;

Процедура ВыходИзExcel()
   
   УдалитьФайлы(ИмяФайла);
   
КонецПроцедуры //ВыходИзExcel()
22 smileeg
 
05.03.12
13:42
там 1с тоже какую-то ошибку выдавал...