Posts Tagged ‘ DefaultDimension

How to display only one attribute value from DefaultDimension

In this post, I will explain how to display only one attribute value from DefaultDimension. I will use CostCenter attribute for my example. As you know DefaultDimension tables are DimensionAttributeValueSet and DimensionAttributeValueSetItem . This tables holds the related data. I wil use only DimensionAttributeValueSetItem table.
I have a DafaultDimension’s RecId end i want to display only CostCenter value. I will join DimensionAttributeValue to DimensionAttributeValueSetItem and give the ranges.

Here is the method displays costCenter values.


// FD: Display CostCenter Value from DefaultDimension
display num dispDefaultDisplayValue()
{
    DimensionAttributeValue            dimAttrValue;
    DimensionAttributeValueSetItem dimAttrValueSetItem;
    ;

    select firstonly dimAttrValueSetItem
    where dimAttrValueSetItem.DimensionAttributeValueSet == this.DimensionDefault
    join dimAttrValue
        where dimAttrValue.RecId == dimAttrValueSetItem.DimensionAttributeValue
        &&    dimAttrValue.DimensionAttribute   == 5637144851;
        // CostCenter RecId. Must be parametric.

    return dimAttrValueSetItem.DisplayValue;

}

I wrote this method to a table that have DimensionDefault field.

Until next time.

Dynamics Ax 2012′de bir müşterinin boyutlarını listelemek

Merhaba

Bu örnekte bir müşteri üzerinde tanımlanmış boyutları ve değerlerini listeleyen bir select cümleciği yazdım. Burada değer girilmemiş boyutlar gelmeyecektir. Hangi boyutların aktif olduğunu gösteren bir select ifadesini gelecek yazımda paylaşacağım.

static void FD_AddCustDefaultDim(Args _args)
{
    CustTable                           custTable;
    DimensionAttribute                  dimAttr;
    DimensionAttributeValue             dimAttrValue;
    DimensionAttributeValueSetItem      dimAttrValueSetItem;
    ;

    while select custTable
    where  custTable.AccountNum  == "1101"
    join dimAttrValueSetItem
    where dimAttrValueSetItem.DimensionAttributeValueSet ==custTable.DefaultDimension
    join dimAttrValue
         where dimAttrValue.RecId  == dimAttrValueSetItem.DimensionAttributeValue
         join dimAttr
         where dimAttr.RecId   == dimAttrValue.DimensionAttribute
    {
        info(strFmt("%1 ; %2 ; %3 ; %4", CustTable.AccountNum , CustTable.name(),
                        dimAttr.Name , dimAttrValueSetItem.DisplayValue));
    }
}

Çıktısı benim boyut kurulumuma göre şöyle oluyor.

Selamlar.

Dynamics Ax 2012′de DefaultDimension sorgu örnekleri

Merhaba

Şu yazımda BusinessUnit boyutunun değeri “20″ olan müşterileri listeleyen bir query yazmıştım. Bu query örneğinin select ifadesiyle yazılmış şeklini iki örnekle anlatacağım.

Bu örnekte gerekli bütün tabloları join’leyip istediğimiz sonuca ulaşıyoruz.

static void FD_AddCustDimensionRangeSelectAll(Args _args)
{
CustTable                           custTable;
DimensionAttribute                  dimAttr;
DimensionAttributeValue             dimAttrValue;
DimensionAttributeValueSetItem      dimAttrValueSetItem;
;

while select custTable
join dimAttrValueSetItem
where dimAttrValueSetItem.DimensionAttributeValueSet == custTable.DefaultDimension
&&    dimAttrValueSetItem.DisplayValue               == "20"
join dimAttrValue
where dimAttrValue.RecId == dimAttrValueSetItem.DimensionAttributeValue
join dimAttr
where dimAttr.RecId             == dimAttrValue.DimensionAttribute
&&    dimAttr.BackingEntityType == tableNum(DimAttributeOMBusinessUnit)

{
info(strFmt("%1 ; %2 ; %3 ; %4", CustTable.AccountNum ,
dimAttr.Name , dimAttrValueSetItem.DisplayValue , CustTable.name()));
}
}

Bu örnekte ise DimensionAttributeValue ve DimensionAttributeValueSetItem yerine Bir view kullanıyoruz.

static void FD_AddCustDimensionRangeSelect(Args _args)
{
CustTable                           custTable;
DimensionAttribute                  dimAttr;
DimensionAttributeValueSetItemView  dimAttrValueSetItemView;
;

while select custTable
join dimAttrValueSetItemView
where dimAttrValueSetItemView.DimensionAttributeValueSet == custTable.DefaultDimension
&&    dimAttrValueSetItemView.DisplayValue               == "20"
join dimAttr
where dimAttr.RecId       == dimAttrValueSetItemView.DimensionAttribute
&&    dimAttr.BackingEntityType == tableNum(DimAttributeOMBusinessUnit)

{
info(strFmt("%1 ; %2 ; %3 ; %4", CustTable.AccountNum ,
dimAttr.Name , dimAttrValueSetItemView.DisplayValue , CustTable.name()));
}
}

İki kodu da çalıştırdığınızda aynı çıktıyı alacaksınız.

Selamlar.