Показать сообщение отдельно
Старый 27.03.2017, 08:57   #6  
Pandasama is offline
Pandasama
Участник
 
464 / 140 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Также пробовал через .NET вызывать
X++:
Microsoft.Office.Interop.Excel.Application tExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
real        version;
str         strVersion;
;
strVersion = tExcel.get_Version();
info(strVersion);
tExcel.Quit();
tExcel = null;
System.GC::Collect();
System.GC::WaitForPendingFinalizers();
Процесс Excel в памяти остается (Ax2012R3 + Office 2013)

Ну или такой вариант - аналогично

X++:
static void Job25(Args _args)
{
    ComExcelDocument_RU excelDocument;
    COM                 comDocument;
    COM                 comApplication;
    real                excelVersion;

    try
    {
        excelDocument = ComExcelDocument_RU::construct();
        excelDocument.newFile('', false);
        comDocument = excelDocument.getComDocument();
        if (comDocument)
        {
            comApplication = comDocument.application();
            if (comApplication)
            {
                excelVersion = str2num(comApplication.version());
            }
        }

        excelDocument.quitApplication(true);
        if (comDocument)
        {
            comDocument.finalize();
            comDocument = null;
        }
        
        if (comApplication)
        {
            comApplication.finalize();
            comApplication = null;
        }
        System.GC::Collect();
        System.GC::WaitForPendingFinalizers();
    }
    catch (Exception::Internal)
    {
        excelDocument.closeDocument();
        if (comDocument == null || comApplication == null)
        {
            throw error("@SYS98748");
        }
    }

    info(strFmt("%1", excelVersion));
}

Последний раз редактировалось Pandasama; 27.03.2017 в 09:00.