Miklix

อัปเดตค่ามิติทางการเงินจากรหัส X++ ใน Dynamics 365

ที่ตีพิมพ์: 16 กุมภาพันธ์ 2025 เวลา 12 นาฬิกา 01 นาที 51 วินาที UTC
ปรับปรุงล่าสุด : 13 พฤศจิกายน 2025 เวลา 13 นาฬิกา 38 นาที 13 วินาที 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 ปี และปัจจุบันทำงานเต็มเวลาให้กับบริษัทไอทีขนาดใหญ่แห่งหนึ่งในยุโรป เมื่อไม่ได้เขียนบล็อก เขาจะใช้เวลาว่างไปกับความสนใจ งานอดิเรก และกิจกรรมต่างๆ มากมาย ซึ่งในระดับหนึ่งอาจสะท้อนให้เห็นได้จากหัวข้อต่างๆ มากมายที่กล่าวถึงในเว็บไซต์นี้