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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.09.2021, 10:50   #1  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
DAX2009: экспорт через Группы определений + Excel 2013
Всем привет.
На терминале был удален Excel 2010 а вместо него установлен Excel 2013 из за чего перестал работать импорт/экспорт через группы определений.
Цитата:
[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

Цитата:
Метод "save" в COM-объекте класса "Excel.Application" возвратил код ошибки 0x800A03EC (<неизвестно>), который означает: Save method of Application class failed.
Подебажил, пришел к выводу что система вот тут:
Цитата:
[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 ?
Как обойти такую ошибку?

Последний раз редактировалось oleggy; 03.09.2021 в 11:02.
Старый 03.09.2021, 13:54   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 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
Старый 09.09.2021, 05:10   #3  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Цитата:
Сообщение от SRF Посмотреть сообщение
И для корректного отображения придётся допилить метод, но это можно и не
Речь про метод SysDataExcelCOM::excelVersion() ?

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

 

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

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

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

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