AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.04.2012, 08:29   #1  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 108 (4) +++++
Регистрация: 06.03.2012
Адрес: Moscow/Ukraine/Malta
Убить процесс Excel
Привет коллеги!

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

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

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

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

Спасибо.
Старый 05.04.2012, 08:43   #2  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Метод closeDocument() пробовали вызвать?
Плюс можно глянуть здесь.
__________________
С уважением, Александр.
Старый 05.04.2012, 08:46   #3  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 108 (4) +++++
Регистрация: 06.03.2012
Адрес: Moscow/Ukraine/Malta
Цитата:
Сообщение от samolalex Посмотреть сообщение
Метод closeDocument() пробовали вызвать?
Плюс можно глянуть здесь.
Да, и тему глядел, странно, но не убиваются.
Старый 05.04.2012, 08:48   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Вот ещё интересная ссылка из темы Подвисает Excel
Цитата:
Сообщение от Recoilme Посмотреть сообщение
Старый 05.04.2012, 08:57   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
И ещё подумалось у вас excel при выходе точно не выводит никаких диалогов вроде "Сохранить изменения в файле?" Понятно что отчёт формируется в фоне, т.е. с visible(false), но если временно для тестирования напечатать один документ с отображением его на экране, не выскочит ли при попытке его закрытия подобный диалог? Не может ли это является причиной "подвисания" процесса Excel?
За это сообщение автора поблагодарили: iCloud (2).
Старый 05.04.2012, 09:38   #6  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 108 (4) +++++
Регистрация: 06.03.2012
Адрес: Moscow/Ukraine/Malta
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
И ещё подумалось у вас excel при выходе точно не выводит никаких диалогов вроде "Сохранить изменения в файле?" Понятно что отчёт формируется в фоне, т.е. с visible(false), но если временно для тестирования напечатать один документ с отображением его на экране, не выскочит ли при попытке его закрытия подобный диалог? Не может ли это является причиной "подвисания" процесса Excel?
Интересно.. Да, выскочит, т.к. используется шаблон.
Возможно ли избавиться от этого окна как-либо, хотя не факт что оно может влиять?
Офис 2007, АХ2009.
Старый 05.04.2012, 09:49   #7  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Нашел старый код, там отчет создавался посредством класса 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()?
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 05.04.2012 в 09:59.
За это сообщение автора поблагодарили: iCloud (2).
Старый 05.04.2012, 09:59   #8  
AlexeyS is offline
AlexeyS
Участник
 
404 / 339 (12) ++++++
Регистрация: 15.06.2004
Адрес: москва
процесс завершает excel.quitApplication(true); (true - закрыть процесс без сохранения документа)
За это сообщение автора поблагодарили: iCloud (2).
Старый 05.04.2012, 10:20   #9  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 108 (4) +++++
Регистрация: 06.03.2012
Адрес: Moscow/Ukraine/Malta
Цитата:
Сообщение от samolalex Посмотреть сообщение
Нашел старый код, там отчет создавался посредством класса COM (без участия Аксаптовских классов):
Да, даже попробовал, создал метод в ComExcelDocument_RU, который .quit() выполнял, не помогло.
quitApplication() пробовал но без параметра.

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

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

to samolalex
Спасибо за мысли.
Старый 05.04.2012, 10:38   #11  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 108 (4) +++++
Регистрация: 06.03.2012
Адрес: Moscow/Ukraine/Malta
Нашел в методе:
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.

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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из 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

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:05.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.