อัปเดตค่ามิติทางการเงินจากรหัส X++ ใน Dynamics 365
ที่ตีพิมพ์: 16 กุมภาพันธ์ 2025 เวลา 12 นาฬิกา 01 นาที 51 วินาที UTC
บทความนี้อธิบายวิธีการปรับปรุงค่ามิติทางการเงินจากโค้ด X++ ใน Dynamics 365 รวมถึงตัวอย่างโค้ด
Update Financial Dimension Value from X++ Code in Dynamics 365
ข้อมูลในโพสต์นี้ขึ้นอยู่กับ Dynamics 365 มันควรจะทํางานใน Dynamics AX 2012 ด้วย แต่ฉันยังไม่ได้ทดสอบอย่างชัดเจน
เมื่อเร็ว ๆ นี้ฉันได้รับมอบหมายให้อัปเดตมูลค่าของมิติทางการเงินเดียวตามตรรกะของแบบฟอร์มบางอย่าง
อย่างที่คุณอาจทราบ เนื่องจากมิติทางการเงินของ Dynamics AX 2012 ถูกเก็บไว้ในตารางแยกต่างหาก และอ้างอิงผ่าน RecId โดยปกติในฟิลด์ 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;
}
วิธีการนี้ส่งคืน DimensionDefault RecId ใหม่ (หรือเหมือนกัน) ดังนั้นหากการอัปเดตค่ามิติสําหรับเรกคอร์ด ซึ่งอาจเป็นสถานการณ์ที่พบบ่อยที่สุด คุณควรตรวจสอบให้แน่ใจว่าได้อัปเดตฟิลด์มิติในเรกคอร์ดนั้นด้วยค่าใหม่