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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.02.2014, 13:16   #1  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
И этот вариант мы тоже уже пробовали. Не помогает. Процесс остается висеть
Старый 03.02.2014, 13:27   #2  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от Mila Посмотреть сообщение
И этот вариант мы тоже уже пробовали. Не помогает. Процесс остается висеть
На худой конец сделайте документ видимым:
X++:
excelDocument.visible(true);
__________________
// no comments
Старый 03.02.2014, 13:56   #3  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
Делала. Документ excel исчезает (закрывается), а процесс все равно висеть остается.
Старый 03.02.2014, 19:08   #4  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
Цитата:
Сообщение от Mila Посмотреть сообщение
Делала. Документ excel исчезает (закрывается), а процесс все равно висеть остается.
он что не убиваемый? "taskkill /im excel.exe" .
Попробуйте чтоли так еще
X++:
if(excelApplication)
        {
            excelApplication.displayAlerts(false);
            excelWorkBooks.close();
            excelApplication.quit();
        }
Старый 04.02.2014, 09:22   #5  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
На "displayAlerts" просто ругается при выполнении. А убить получилось только process.Kill(), но ведь это не выход. При этом будут закрыты все excel-ские файлы.
Старый 06.02.2014, 08:18   #6  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
Мы решили проблему следующим образом (подходит только для нашего случая, т.к. форма с ActiveX компонентой не открывается, если есть хотя бы один запущенный процесс Excel): при создании Excel-документа запоминаем соответствующие процессы, а при закрытии формы именно их и убиваем. Таким образом, если после открытия нашей формы, пользователь работал с какими-то другими excel-документами, они останутся открытыми.
X++:
void createExcelDocument(Object _webBrowser)
{
    System.Collections.IEnumerable processes;
    System.Collections.IEnumerator enumerator;
    System.Diagnostics.Process process;
    int idExcel;
    if (_webBrowser)
    {
        try
        {
            comWorkbook     = null;
            excelDocument   = null;
            comWorkbook     = _webBrowser.document();
            if (comWorkbook && comWorkbook.toString() == #documentObjectStr)
            {
                excelDocument = ComExcelDocument_RU::newFromCOMDocument(comWorkbook);
                listExcelPidId = new set (types::Integer);
                processes = System.Diagnostics.Process::GetProcessesByName("EXCEL");
                enumerator = processes.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    process = enumerator.get_Current();
                    idExcel = process.get_Id();
                    listExcelPidId.add(idExcel);
                }
 
                if (comWorkbook  && excelDocument.isDocumentValid())
                {
                    comWorkbook.saved(true);
                }
            }
            else
            {
                comWorkbook = null;
            }
        }
        catch (Exception::Internal)
        {
            if (comWorkbook == null)
            {
                documentTabPage.visible(false);
                throw error("@SYS98748");
            }
        }
    }
}
При закрытии формы:
X++:
public void close()
{
    System.Diagnostics.Process process;
    SetIterator si;
    int idPid;
    ;
    SysHelp::initWebBrowser(excelBrowser);
    si = new SetIterator(listExcelPidId) ;
    while (si.more () )
    {
        idPid = si.value();
        process = System.Diagnostics.Process::GetProcessById(idPid);
        process.Kill();
        si.next () ;
    }
    super();
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: Using the Dynamics AX Excel Add-In Blog bot DAX Blogs 1 25.09.2013 07:11
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
atinkerersnotebook: Using Excel to Import Products & Services in Dynamics AX Blog bot DAX Blogs 0 19.07.2013 15:11
диалоговое окно при закрытии файла Excel chanchala DAX: Программирование 8 26.08.2008 13:27
Как открыть готовый шаблон Excel в ActiveX Microsoft Office Spreadsheet 10.0? chi DAX: Программирование 0 16.11.2004 15:33

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:31.