Miklix

อัปเดตค่ามิติทางการเงินจากรหัส 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

กรอบการทํางานทั้งหมดสําหรับการจัดการมิติค่อนข้างซับซ้อน และฉันมักจะพบว่าตัวเองต้องอ่านเอกสารเกี่ยวกับเรื่องนี้อีกครั้ง อาจเป็นเพราะมันไม่ใช่สิ่งที่ฉันทํางานด้วยบ่อยนัก

อย่างไรก็ตาม การอัปเดตฟิลด์ในชุดมิติที่มีอยู่เป็นสิ่งที่เกิดขึ้นบ่อยครั้ง ดังนั้นฉันจึงคิดว่าฉันจะเขียนสูตรอาหารที่ฉันชื่นชอบ ;-)


วิธีการยูทิลิตี้แบบคงที่อาจมีลักษณะดังนี้:

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;
}

วิธีการนี้ส่งคืน DimensionDefault RecId ใหม่ (หรือเหมือนกัน) ดังนั้นหากการอัปเดตค่ามิติสําหรับเรกคอร์ด ซึ่งอาจเป็นสถานการณ์ที่พบบ่อยที่สุด คุณควรตรวจสอบให้แน่ใจว่าได้อัปเดตฟิลด์มิติในเรกคอร์ดนั้นด้วยค่าใหม่

แชร์บนบลูสกายแชร์บนเฟสบุ๊คแชร์บน LinkedInแชร์บน Tumblrแชร์บน Xแชร์บน LinkedInปักหมุดบน Pinterest

มิคเคล บัง คริสเตนเซ่น

เกี่ยวกับผู้เขียน

มิคเคล บัง คริสเตนเซ่น
ไมเคิล คือผู้สร้างและเจ้าของเว็บไซต์ miklix.com เขามีประสบการณ์เป็นโปรแกรมเมอร์/นักพัฒนาซอฟต์แวร์คอมพิวเตอร์มืออาชีพมากว่า 20 ปี และปัจจุบันทำงานเต็มเวลาให้กับบริษัทไอทีขนาดใหญ่แห่งหนึ่งในยุโรป เมื่อไม่ได้เขียนบล็อก เขาจะใช้เวลาว่างไปกับความสนใจ งานอดิเรก และกิจกรรมต่างๆ มากมาย ซึ่งในระดับหนึ่งอาจสะท้อนให้เห็นได้จากหัวข้อต่างๆ มากมายที่กล่าวถึงในเว็บไซต์นี้