Archive for Temmuz 9th, 2013

How to Replace a Financial Dimension in Default Dimensions [Dynamics AX 2012]

Merhaba

Ax 2012 ile finansal boyut yapısının tamamen değiştiğini daha önce ifade etmiştim. Bu değişiklik bize bazı durumlarda fazladan yazılım yükü oluşturuyor.  Bunlardan biride bir boyuttaki belli bir boyutun değerini kod  ile değiştirmek. Şöyle örnekleyeyim.

Bir müşteriniz var ve departman boyutunda 0026 yazıyor. Siz bunu 0030 ile değiştirmek istiyorsunuz.

Ax 2009 ‘da

custTable.Dimension[2] = “0030″;  gibi basit bir kod ile bunu yapabilirdiniz.

Ax 2012 ‘de ise şöyle bir metoda ihtiyacınız var;


static void FD_ChangeDimValue(Args _args)
{
    CustTable                           custTable;
    DimensionAttributeValueSetStorage   dimensionStorage;
    DimensionAttribute                  deparmentDimensionAttribute;
    DimensionAttributeValue             newDepartmentValue;

    ;
    ttsBegin;
    // Müşteri seçiliyor
    custTable =  CustTable::findRecId(22565423201,true);

    // Değiştirelecek boyut seçiliyor
    deparmentDimensionAttribute = DimensionAttribute::findByName("Department");
    // Değiştirilecek boyut için değer seçiliyor.
    newDepartmentValue = DimensionAttributeValue::findByDimensionAttributeAndValue(deparmentDimensionAttribute, "0030");

    dimensionStorage = DimensionAttributeValueSetStorage::find(CustTable.DefaultDimension);
    dimensionStorage.addItem(newDepartmentValue);

    CustTable.DefaultDimension = dimensionStorage.save();

    CustTable.update();
    ttscommit;
}

Selamlar.