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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.08.2011, 14:15   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Serg Посмотреть сообщение
Можете поподробней рассказать, что значить переписать на .NET?
Взять классы-обертки для работы с Excel и переделать их как-то так (на примере SysExcelCells):
X++:
public static client SysExcelCells construct(MSOfficeVersion _version, COM _cells, Microsoft.Office.Interop.Excel.Range _cells_net = null)
{
    if (_cells_net)
    {
        return SysExcelCells_NET::construct( _version, _cells_net );
    }
    return new SysExcelCells(_cells, _version);
}
///////////////////////////////////////////////////////////////////////////////
// реализация обертки для работы с Excel через Microsoft.Office.Interop.Excel
class   SysExcelCells_NET
extends SysExcelCells
{
    Microsoft.Office.Interop.Excel.Range    cells_net;
}
// возвращает ClrObject из пространства имен Microsoft.Office.Interop.Excel, оберткой для которого является экземпляр класса
// это часть внутренней инфраструктуры семейства классов SysExcel*, реализующих работу через .NET
protected CLRObject clrObject()
{
    return cells_net;
}
public final COM comObject()
{
    // copy-paste кода метода-обработчика comObject(), общего для классов SysExcel*, реализующих работу через .NET
    str   methodName = strfmt( '%1.%2', classid2name( classidget( this ) ), methodstr(SysExcel, comObject) );
    throw error( strfmt( "@SYS75628", methodName, "@SYS95798" ) );
}
// способ, которым класс взаимодействует с Excel
// это часть внутренней инфраструктуры семейства классов SysExcel* для реализации кое-каких проверок
protected final InteropKind getXlInteropKind()
{
    return InteropKind::ClrInterop;
}
public SysExcelCell item(int _row, int _column)
{
    // предполагаем, что класс может работать и на сервере, при этом вызывающий код не должен знать детали взаимодействия с Excel
    new InteropPermission( InteropKind::ClrInterop ).assert();
    // BP deviation documented
    return SysExcelCell::construct( version, null, cells_net.get_Item( _row, _column ) );
}
protected void new(Microsoft.Office.Interop.Excel.Range _cells_net, MSOfficeVersion _version)
{
    super( null, _version );
    cells_net = _cells_net;
}
public SysExcelRange range(str _range = '')
{
    SysExcelRange   ret;
    ;
    if (_range != '')
    {
        new InteropPermission( InteropKind::ClrInterop ).assert();
        // BP deviation documented
        ret = SysExcelRange::construct( version, null, cells_net.get_Range( _range, this.getClrMissingArg() ) );
    }
    else
    {
        ret = SysExcelRange::construct( version, null, cells_net );
    }
    return ret;
}
public static SysExcelCells_NET construct(MSOfficeVersion _version, Microsoft.Office.Interop.Excel.Range _cells_net)
{
    return new SysExcelCells_NET( _cells_net, _version );
}
Соотв., аналогично переписываем остальные классы, в SysExcelApplication::construct() реализуем возможность создания экземпляра класса-наследника, работающего через .NET, вычищаем весь код, дергающий SysExcel.comObject() - и готово

Последний раз редактировалось gl00mie; 25.08.2011 в 14:20. Причина: очепятки
За это сообщение автора поблагодарили: Stainless (1).
Теги
ax2009, excel

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Выгрузка данных в Excel и их группировка... NetBus DAX: Программирование 8 09.12.2013 11:28
Очень медленно происходит выгрузка отчетов в Excel Leopold Stotch DAX: Программирование 8 31.05.2011 13:47
Sample Design Patterns: Microsoft Dynamics AX - Remedy for slow Microsoft Excel import Blog bot DAX Blogs 0 29.05.2011 17:13
Не идет выгрузка отчета в Excel. Слабая машина. asabin DAX: Администрирование 27 29.06.2005 10:48

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

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

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