AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 05.04.2012, 08:29   #1  
iCloud ist offline
iCloud
Enjoy!
Benutzerbild von iCloud
MCP
Злыдни
 
195 / 112 (4) +++++
Registriert seit: 06.03.2012
Убить процесс Excel
Привет коллеги!

Массовая печать Excel.
Использую класс ComExcelDocument_RU.
Отправляю сразу на печать без вывода в Excel через printOut().
После печати остаются висящие процессы.
Не получается убить.

finalize() - не помогает.
Похожие темы читал, не нашел где бы окончательно это решили.

Знаю через cmd можно убивать процессы так.
К слову.

через процесс id:
kill /PID <номер процесса>
через имя образа:
taskkill /IM excel*

Спасибо.
Alt 05.04.2012, 08:43   #2  
samolalex ist offline
samolalex
Участник
Benutzerbild von samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Registriert seit: 18.06.2010
Ort: Москва
Метод closeDocument() пробовали вызвать?
Плюс можно глянуть здесь.
__________________
С уважением, Александр.
Alt 05.04.2012, 08:46   #3  
iCloud ist offline
iCloud
Enjoy!
Benutzerbild von iCloud
MCP
Злыдни
 
195 / 112 (4) +++++
Registriert seit: 06.03.2012
Zitat:
Zitat von samolalex Beitrag anzeigen
Метод closeDocument() пробовали вызвать?
Плюс можно глянуть здесь.
Да, и тему глядел, странно, но не убиваются.
Alt 05.04.2012, 08:48   #4  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.449 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Вот ещё интересная ссылка из темы Подвисает Excel
Zitat:
Zitat von Recoilme Beitrag anzeigen
Alt 05.04.2012, 08:57   #5  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.449 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
И ещё подумалось у вас excel при выходе точно не выводит никаких диалогов вроде "Сохранить изменения в файле?" Понятно что отчёт формируется в фоне, т.е. с visible(false), но если временно для тестирования напечатать один документ с отображением его на экране, не выскочит ли при попытке его закрытия подобный диалог? Не может ли это является причиной "подвисания" процесса Excel?
This post has been rated by: iCloud (2).
Alt 05.04.2012, 09:38   #6  
iCloud ist offline
iCloud
Enjoy!
Benutzerbild von iCloud
MCP
Злыдни
 
195 / 112 (4) +++++
Registriert seit: 06.03.2012
Zitat:
Zitat von S.Kuskov Beitrag anzeigen
И ещё подумалось у вас excel при выходе точно не выводит никаких диалогов вроде "Сохранить изменения в файле?" Понятно что отчёт формируется в фоне, т.е. с visible(false), но если временно для тестирования напечатать один документ с отображением его на экране, не выскочит ли при попытке его закрытия подобный диалог? Не может ли это является причиной "подвисания" процесса Excel?
Интересно.. Да, выскочит, т.к. используется шаблон.
Возможно ли избавиться от этого окна как-либо, хотя не факт что оно может влиять?
Офис 2007, АХ2009.
Alt 05.04.2012, 09:49   #7  
samolalex ist offline
samolalex
Участник
Benutzerbild von samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Registriert seit: 18.06.2010
Ort: Москва
Нашел старый код, там отчет создавался посредством класса COM (без участия Аксаптовских классов):
X++:
  try
    {
        excelApplication = new COM("excel.application");
        excelApplication.SheetsInNewWorkBook(1);
        excelWorkBooks = excelApplication.Workbooks();
        excelWorkBook = excelWorkBooks.add();
        excelWorkSheet = excelWorkBook.ActiveSheet();
        cells = excelWorksheet.Cells();

        pageSetup =  excelWorkSheet.PageSetup();
        pageSetup.Orientation(2);

    //Header -->
        this.CreateHeader();
    //Header <--

    //FillBody -->
        this.FillDocument();
    //FillBody <--

        excelApplication.visible(true);
    }
    catch(exception::Error)
    {
        if(excelApplication)
        {
            excelApplication.displayAlerts(false);
            excelWorkBooks.close();
            excelApplication.quit();
        }
    }
Таким образом, может быть, в качестве решения, стоит привязаться в конце построения отчета к непосредственным COM-переменным и уже через них закрыть процесс?

Хотя по идее excelApplication.quit() отрабатывается в методе класса COMOfficeDocument_RU.quitApplication - класс, от которого наследуется COMExcelDocument_RU.
А вы, кстати, пробовали вызывать метод quitApplication()?
__________________
С уважением, Александр.

Geändert von samolalex (05.04.2012 um 09:59 Uhr)
This post has been rated by: iCloud (2).
Alt 05.04.2012, 09:59   #8  
AlexeyS ist offline
AlexeyS
Участник
 
404 / 339 (12) ++++++
Registriert seit: 15.06.2004
Ort: москва
процесс завершает excel.quitApplication(true); (true - закрыть процесс без сохранения документа)
This post has been rated by: iCloud (2).
Alt 05.04.2012, 10:20   #9  
iCloud ist offline
iCloud
Enjoy!
Benutzerbild von iCloud
MCP
Злыдни
 
195 / 112 (4) +++++
Registriert seit: 06.03.2012
Zitat:
Zitat von samolalex Beitrag anzeigen
Нашел старый код, там отчет создавался посредством класса COM (без участия Аксаптовских классов):
Да, даже попробовал, создал метод в ComExcelDocument_RU, который .quit() выполнял, не помогло.
quitApplication() пробовал но без параметра.

quitApplication(false) при visible(false) после каждой фактуры спрашивает, сохранить ли документ?
Alt 05.04.2012, 10:28   #10  
iCloud ist offline
iCloud
Enjoy!
Benutzerbild von iCloud
MCP
Злыдни
 
195 / 112 (4) +++++
Registriert seit: 06.03.2012
Передав true в quitApplication() после printOut() всё получилось - процесс убивается! Хотя я не прослеживаю логики. Сохранить-да. А куда\чего.

to S.Kuskov
Вы были правы, фишка "подвисания" процесса связана с вылетающим окошком при закрытии Excel.

to samolalex
Спасибо за мысли.
Alt 05.04.2012, 10:38   #11  
iCloud ist offline
iCloud
Enjoy!
Benutzerbild von iCloud
MCP
Злыдни
 
195 / 112 (4) +++++
Registriert seit: 06.03.2012
Нашел в методе:
True if the specified document or template hasn't been changed since it was last saved.
// False if office application displays a prompt to save changes when the document is closed.

Ну это всё объясняет. Спасибо всем.
Stichworte
excel

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Иморт из Excel 2010. Как правильно закрыть Excel? jkspb DAX: Программирование 4 13.10.2013 00:55
проблема использования Excel через clr Batuev Artem DAX: Программирование 8 22.08.2011 18:01
Sample Design Patterns: Microsoft Dynamics AX - Remedy for slow Microsoft Excel import Blog bot DAX Blogs 0 29.05.2011 17:13
Как убить процессы Excel? DreamCreator DAX: Программирование 4 06.10.2005 16:32

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 19:39 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.