Dynamics Ax 2012 DimensionProvider sınıfı

Merhaba

Ax 2012 ile finansal boyut yapısındaki bir çok değişiklikten eski yazılarımda bahsetmiştim. Boyut yapısındaki bu değişiklikler üzerine kodlarımızda boyutla işlem yapmamız gerektiğinde çok zorlanacağımız düşünmüştüm. Microsoft’taki arkadaşlarda aynı düşünceyi paylaşmışlar ki DimensionProvider sınıfını yazmışlar. Bu sınıf Query yapısında boyutla ilgili işlemleri yapmamızı kolaylaştırıyor ve bizi gereksiz bir çok Join ifadesinden kurtarıyor. Aşağıdaki örneği inceleyelim.

static void FD_AddDimensionRangeToCust(Args _args)
{
    Query                       query = new Query();
    QueryRun                    queryRun;
    QueryBuildDataSource        qbds;
    DimensionProvider           dimProvider = new DimensionProvider();
    CustTable                   custTable;
    ;

    qbds = query.addDataSource(tableNum(CustTable));

    dimProvider.addAttributeRangeToQuery(query, qbds.name(),
                        fieldStr(CustTable,DefaultDimension ),
                        DimensionComponent::DimensionAttribute,
                        "20",
                        "BusinessUnit", true );

    queryRun = new QueryRun(query);
    queryRun.prompt();

    while(queryRun.next())
    {
        CustTable = queryRun.get(tableNum(CustTable));
        info(strFmt("%1 ; %2 ; %3", CustTable.AccountNum ,
                    CustTable.name() , CustTable.DefaultDimension));
    }
}

Bu örnekte BusinessUnit boyutu 20 olan müşterileri listeleyen bir Query yazdım. DimensionProvider sınıfının bir çok metodu mevcut. İhtiyaç oldukça incelemek lazım.

Eski versiyonlarda bunu yazmak gayet  kolaydı çünkü boyut müşteri tablosunda dizi tipinde bir alan olarak bulunuyordu. Ax 2012′de ise tamamen farklı tablolarda tutulan bir veri artık. Bu yüzden 3-4 tablolu bir Join ifadesi yazmaktansa bu sınıfı kullanmak çok daha kolay.

Bu Query ifadesinin Select ile nasıl yazılabileceğini bir sonraki yazımda  ele alacağım.

Selamlar.

 
  • Trackback are closed
  • Comments (0)
  1. No comments yet.

Comment are closed.