AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 03.09.2021, 10:50   #1  
oleggy is offline
oleggy
Участник
 
282 / 36 (2) +++
Join Date: 03.12.2019
Location: Россия
DAX2009: экспорт через Группы определений + Excel 2013
Всем привет.
На терминале был удален Excel 2010 а вместо него установлен Excel 2013 из за чего перестал работать импорт/экспорт через группы определений.
Quote:
[c] \Classes\SysExcelApplication\save - 4
[c] \Classes\SysDataExcelCOM\save - 5
[c] \Classes\SysDataExcelCOM\buildWorkbooks - 89
[c] \Classes\SysDataExportExcel\export - 35
[c] \Classes\SysDataExportBase\run - 5
[c] \Classes\SysDataExport\main - 20
[c] \Classes\FormFunctionButtonControl\Clicked

Quote:
Метод "save" в COM-объекте класса "Excel.Application" возвратил код ошибки 0x800A03EC (<неизвестно>), который означает: Save method of Application class failed.
Подебажил, пришел к выводу что система вот тут:
Quote:
[c] \Classes\SysExcelApplication\construct - 1
[c] \Classes\SysDataExcelCOM\new - 4
[c] \Classes\SysDataExcelCOM\construct - 17
[c] \Classes\SysDataExportExcel\export - 30
[c] \Classes\SysDataExportBase\run - 5
[c] \Classes\SysDataExport\main - 20
[c] \Classes\FormFunctionButtonControl\Clicked

X++:
static client SysExcelApplication construct()
{
    SysExcelApplication     ret;
    COM                     excel;
    real                    excelVersion;
    ;

    try
    {
        excel = new COM(#EXCEL);
    }
    catch (Exception::Internal)
    {
        if (excel == null)
        {
            throw error("@SYS98748");
        }
    }

    excelVersion = str2num(excel.version());

    if (excelVersion >= 12.0)
        ret = SysExcelApplication_2007::construct(excel); // <-- тут
    else if (excelVersion >= 10.0)
        ret = SysExcelApplication_XP::construct(excel);
    else
        ret = SysExcelApplication_2000::construct(excel);

    return ret;
}

Видит что раз в системе установлен excel версии 15 (2013) значит подойдет класс SysExcelApplication_2007 и при попытке сохранить сгенерированный файл возникает ошибка, типа в Excel 2013 нет подходящего метода? Я верно понял ошибку?

Подскажите есть уже готовые решения внедряющие такую поддержку Excel 2013 ?
Как обойти такую ошибку?

Last edited by oleggy; 03.09.2021 at 11:02.
Old 03.09.2021, 13:54   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Join Date: 08.08.2007
Blog Entries: 1
Вот тут обсуждалась подобная проблема, возможно там уже посмотрели

Экспорт/импорт данных при помощи группы определения

Судя по ответам, можно попробовать вызвать save на workbook, т.е.

Classes\SysDataExcelCOM\save, вызывать не excel.save(), а как нибудь так excel.workbooks().workbook().saveAs\save

И для корректного отображения придётся допилить метод, но это можно и не делать.

X++:
private LabelString excelVersion()
{
    COM     excelCOM = excel.comObject();
    // BP Deviation documented
    real    excelVersion = str2num(excelCOM.version());

    switch (true)
    {
        case excelVersion < 10 :
            return #xlVersionOffice2000;

        case excelVersion == 10 :
            return #xlVersionOfficeXP;

        case excelVersion == 11 :
            return #xlVersionOffice2003;

        case excelVersion == 12 :
            return #xlVersionOffice2007;

    }

    return #xlVersionOffice2000;
}
__________________
Sergey Nefedov
Old 09.09.2021, 05:10   #3  
oleggy is offline
oleggy
Участник
 
282 / 36 (2) +++
Join Date: 03.12.2019
Location: Россия
Quote:
Originally Posted by SRF View Post
И для корректного отображения придётся допилить метод, но это можно и не
Речь про метод SysDataExcelCOM::excelVersion() ?

Он у меня в том же виде как у вас или я что то упустил?
Old 09.09.2021, 13:00   #4  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Join Date: 08.08.2007
Blog Entries: 1
Да, я про этот метод. Я к тому, что версия > 12 будет отображаться как office 2000, для эстетики надо бы и этот метод поправить, а так на функциональность он конечно влиять не будет.
__________________
Sergey Nefedov
Tags
com-объект, excel, excel 2013, excel com формат, группа определений

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
atinkerersnotebook: Using Vendor Requests to Manage On-boarding New Vendors Blog bot DAX Blogs 1 22.10.2013 02:24
atinkerersnotebook: Using Service Management to Track Service Orders Blog bot DAX Blogs 1 25.08.2013 19:16
atinkerersnotebook: Using Excel to Import Products & Services in Dynamics AX Blog bot DAX Blogs 0 19.07.2013 15:11
Импорт договоров покупки AX2012 через Excel Add-in Daar DAX: Функционал 1 25.06.2013 19:27
axnontechnical: How to display Geospatial data in Excel 2013 using Microsoft Dynamics AX Blog bot DAX Blogs 0 10.04.2013 23:12

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 19:46.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.