Miklix

Dynamics 365'te X++ Kodundan Finansal Boyut Değerini Güncelle

Yayınlandı: 16 Şubat 2025 12:01:38 UTC

Bu makalede, bir kod örneği de dahil olmak üzere Dynamics 365'te X++ kodundan bir finansal boyut değerinin nasıl güncelleneceği açıklanmaktadır.


Bu sayfa, mümkün olduğunca çok kişi tarafından erişilebilir olması amacıyla İngilizce'den makine çevirisiyle çevrilmiştir. Ne yazık ki, makine çevirisi henüz mükemmelleştirilmiş bir teknoloji değildir, bu nedenle hatalar meydana gelebilir. Tercih ederseniz, orijinal İngilizce versiyonu buradan görüntüleyebilirsiniz:

Update Financial Dimension Value from X++ Code in Dynamics 365

Bu yazıda yer alan bilgiler Dynamics 365'e dayanmaktadır. Dynamics AX 2012'de de çalışması gerekir, ancak bunu açıkça test etmedim.

Yakın zamanda, bir tür mantığa dayalı olarak tek bir finansal boyutun değerini güncelleme görevi bana verildi.

Bildiğiniz gibi Dynamics AX 2012'den itibaren finansal boyutlar ayrı tablolarda saklanıyor ve genellikle DefaultDimension alanında bulunan RecId aracılığıyla referans alınıyor.

Boyutları ele almanın tüm çerçevesi oldukça karmaşıktır ve belki de çok sık çalışmadığım bir konu olduğu için, bununla ilgili belgeleri sık sık yeniden okumak zorunda kalıyorum.

Neyse, mevcut bir boyut kümesindeki bir alanı güncellemek sıkça karşılaşılan bir durum, bu yüzden en sevdiğim tarifi yazmayı düşündüm ;-)


Statik bir yardımcı program yöntemi şu şekilde görünebilir:

public static DimensionDefault updateDimension( DimensionDefault    _defaultDimension,
                                                Name                _dimensionName,
                                                DimensionValue      _dimensionValue)
{
    DimensionAttribute                  dimAttribute;
    DimensionAttributeValue             dimAttributeValue;
    DimensionAttributeValueSetStorage   dimStorage;
    DimensionDefault                    ret;
    ;

    ret             = _defaultDimension;

    ttsbegin;

    dimStorage      = DimensionAttributeValueSetStorage::find(_defaultDimension);
    dimAttribute    = DimensionAttribute::findByName(_dimensionName);

    if (_dimensionValue)
    {
        dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(  dimAttribute,
                                                                                        _dimensionValue,
                                                                                        true,
                                                                                        true);
        dimStorage.addItem(dimAttributeValue);
    }
    else
    {
        dimStorage.removeDimensionAttribute(dimAttribute.RecId);
    }

    ret = dimStorage.save();

    ttscommit;

    return ret;
}

Bu yöntem yeni (veya aynı) bir DimensionDefault RecId döndürür, dolayısıyla bir kayıt için boyut değerini güncelliyorsanız (ki bu muhtemelen en yaygın senaryodur), o kayıttaki boyut alanını yeni değerle güncellediğinizden emin olmalısınız.

Bluesky'de paylaşFacebook'ta paylaşLinkedIn'de paylaşTumblr'da paylaşX'te paylaşLinkedIn'de paylaşPinterest'e Pinleyin

Mikkel Bang Christensen

Yazar Hakkında

Mikkel Bang Christensen
Mikkel miklix.com'un yaratıcısı ve sahibidir. Profesyonel bilgisayar programcısı/yazılım geliştiricisi olarak 20 yılı aşkın deneyime sahiptir ve şu anda büyük bir Avrupa BT şirketinde tam zamanlı olarak çalışmaktadır. Blog yazmadığı zamanlarda, boş zamanlarını çok çeşitli ilgi alanları, hobiler ve aktivitelerle geçirmektedir ve bu da bir dereceye kadar bu web sitesinde kapsanan konuların çeşitliliğine yansıyabilir.