Buscar en este blog

jueves, 9 de febrero de 2012

Exportar datos a Excel con Dynamics Ax 2009

Pues eso, el siguiente ejemplo muestra cómo enviar los datos de una consulta a un archivo de excel desde Dynamics Ax 2009. Esto es necesario en el caso en que tenemos algún usuario quisquilloso que necesita información de su área muy detallada y que en Ax no se encuentra en ningun reporte, a veces es mas fácil hacer la consulta y mandarla a un excel.
En el siguiente ejemplo, se muestra cómo pasar el resultado de una consulta a un excel y que al correr el código se abra en automático la hoja que se genero. La consulta calcula el saldo de cuentas contables referentes a los conjuntos de artículos.


static void SaldosCuentasExcel(Args _args)
{
    LedgerTable ledgerTable;
    ItemGroupId itemGroupId;
    InventPosting inventPosting;
    InventItemGroup inventItemGroup;
    AmountMST balance;


    TransDate fromDate,todate;
    LedgerBalanceSum_CurrentMST ledgerBalanceSum_CurrentMST_SaldoMes;


    CustTable custTable;
    SysExcelApplication application;
    SysExcelWorkBooks    workbooks;
    SysExcelWorkBook     workbook;
    SysExcelWorksheets  worksheets;
    sysExcelWorksheet   worksheet;
    SysExcelCells       cells;
    SysExcelCell        cell;
    int                 row;
    ;
    application = SysExcelApplication::construct();
    workbooks = application.workbooks();
    workbook = workbooks.add();
    worksheets = workbook.worksheets();
    worksheet = worksheets.itemFromNum(1);
    cells = worksheet.cells();
    cells.range('A:A').numberFormat('@');


    fromdate = str2date("01/01/2011",123);
    todate = str2date("08/02/2012",123);
    ledgerBalanceSum_CurrentMST_SaldoMes = new LedgerBalanceSum_CurrentMST(fromdate,todate);


    while select ItemRelation, LedgerAccountId, InventAccountType from inventPosting
    join inventItemGroup
    order by inventItemGroup.Name
    where inventPosting.ItemRelation == inventItemGroup.ItemGroupId
    {
        balance = ledgerBalanceSum_CurrentMST_SaldoMes.balance(inventPosting.LedgerAccountId);
        row++;
        cell = cells.item(row,1);
        cell.value(inventItemGroup.Name);
        cell = cells.item(row,2);
        cell.value(inventPosting.LedgerAccountId);
        cell = cells.item(row,3);
        cell.value(enum2str(inventPosting.InventAccountType));
        cell = cells.item(row,4);
        cell.value(balance);
    }
    application.visible(true);
}


Por último, te invito a que te unas a la página de facebook recién creada para estar al día con las actualizaciones del blog y que podamos tener más comunicación. La meta? es hacer la comunidad de habla hispana mas grande sobre Dynamics Ax en cuestiones de desarrollo.




No hay comentarios.:

Publicar un comentario