Memperbarui Nilai Dimensi Keuangan dari Kode X++ di Dynamics 365
Diterbitkan: 16 Februari 2025 pukul 12.01.08 UTC
Artikel ini menjelaskan cara memperbarui nilai dimensi keuangan dari kode X++ di Dynamics 365, termasuk contoh kode.
Update Financial Dimension Value from X++ Code in Dynamics 365
Informasi dalam postingan ini berdasarkan Dynamics 365. Seharusnya juga berfungsi di Dynamics AX 2012, tetapi saya belum mengujinya secara eksplisit.
Saya baru-baru ini ditugaskan untuk memperbarui nilai satu dimensi keuangan berdasarkan beberapa logika bentuk.
Seperti yang mungkin Anda ketahui, karena dimensi keuangan Dynamics AX 2012 disimpan dalam tabel terpisah dan direferensikan melalui RecId, biasanya di bidang DefaultDimension.
Seluruh kerangka kerja untuk menangani dimensi agak rumit dan saya sering kali harus membaca ulang dokumentasinya, mungkin karena itu bukan sesuatu yang sering saya kerjakan.
Bagaimanapun, memperbarui bidang dalam set dimensi yang ada adalah sesuatu yang sering muncul, jadi saya pikir saya akan menulis resep favorit saya ;-)
Metode utilitas statis bisa terlihat seperti ini:
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;
}
Metode ini mengembalikan DimensionDefault RecId yang baru (atau yang sama), jadi jika memperbarui nilai dimensi untuk suatu rekaman - yang mungkin merupakan skenario paling umum - Anda harus memastikan untuk memperbarui bidang dimensi pada rekaman tersebut dengan nilai baru.