การสร้างฟิลด์การค้นหาสำหรับมิติทางการเงินใน Dynamics 365
ที่ตีพิมพ์: 16 กุมภาพันธ์ 2025 เวลา 11 นาฬิกา 34 นาที 35 วินาที UTC
ปรับปรุงล่าสุด : 12 มกราคม 2026 เวลา 8 นาฬิกา 56 นาที 21 วินาที UTC
บทความนี้อธิบายวิธีการสร้างฟิลด์ค้นหาสำหรับมิติทางการเงินใน Dynamics 365 for Operations รวมถึงตัวอย่างโค้ด X++
Creating a Lookup Field for a Financial Dimension in Dynamics 365
ข้อมูลในโพสต์นี้อ้างอิงจาก Dynamics 365 for Operations แต่ส่วนใหญ่ก็สามารถนำไปใช้กับ Dynamics AX 2012 ได้เช่นกัน (ดูด้านล่าง)
เมื่อไม่นานมานี้ ฉันได้รับมอบหมายให้สร้างฟิลด์ใหม่ ซึ่งควรจะสามารถระบุข้อมูลเชิงการเงินได้เพียงมิติเดียว ในกรณีนี้คือ ผลิตภัณฑ์ แน่นอนว่า ฟิลด์ใหม่นี้ควรจะสามารถค้นหาค่าที่ถูกต้องของข้อมูลเชิงการเงินนี้ได้ด้วย
วิธีนี้ซับซ้อนกว่าการค้นหาข้อมูลในตารางทั่วไปเล็กน้อย แต่ถ้าคุณรู้วิธีทำ มันก็ไม่ยากเกินไปนัก
โชคดีที่แอปพลิเคชันมาตรฐานมีแบบฟอร์มค้นหาที่สะดวก (DimensionLookup) ซึ่งสามารถใช้เพื่อวัตถุประสงค์นี้ได้ หากคุณระบุแอตทริบิวต์มิติที่ต้องการค้นหา
ขั้นแรก คุณต้องสร้างฟิลด์แบบฟอร์มก่อน ฟิลด์นี้สามารถอิงจากฟิลด์ในตารางหรือวิธีการแก้ไขก็ได้ ไม่สำคัญสำหรับฟังก์ชันการค้นหา แต่ไม่ว่าด้วยวิธีใดวิธีหนึ่ง ฟิลด์นั้นจะต้องใช้ชนิดข้อมูลเพิ่มเติม DimensionValue
จากนั้นคุณต้องสร้างตัวจัดการเหตุการณ์ OnLookup สำหรับฟิลด์นั้น ในการสร้างตัวจัดการเหตุการณ์ ให้คลิกขวาที่เหตุการณ์ OnLookup สำหรับฟิลด์ แล้วเลือก "คัดลอกวิธีการจัดการเหตุการณ์" จากนั้นคุณสามารถวางวิธีการจัดการเหตุการณ์ที่ว่างเปล่าลงในคลาสและแก้ไขจากที่นั่นได้
หมายเหตุ: วิธีการส่วนใหญ่ต่อไปนี้จะใช้ได้กับ Dynamics AX 2012 เช่นกัน แต่แทนที่จะสร้างตัวจัดการเหตุการณ์ คุณสามารถเขียนทับวิธีการค้นหาของฟิลด์ในฟอร์มได้
ตัวจัดการเหตุการณ์ควรมีลักษณะดังนี้ (เปลี่ยนชื่อฟอร์มและชื่อฟิลด์ตามความจำเป็น):
FormControlEventHandler(formControlStr( MyForm,
MyProductDimField),
FormControlEventType::Lookup)
]
public static void MyProductDimField_OnLookup( FormControl _sender,
FormControlEventArgs _e)
{
FormStringControl control;
Args args;
FormRun formRun;
DimensionAttribute dimAttribute;
;
dimAttribute = DimensionAttribute::findByName('Product');
args = new Args();
args.record(dimAttribute);
args.caller(_sender);
args.name(formStr(DimensionLookup));
formRun = classFactory.formRunClass(args);formRun.init();
control = _sender as FormStringControl;
control.performFormLookup(formRun);
}
อ่านเพิ่มเติม
หากคุณชอบโพสต์นี้ คุณอาจชอบคำแนะนำเหล่านี้ด้วย:
- เพิ่มวิธีการแสดงหรือแก้ไขผ่านส่วนขยายใน Dynamics 365
- Visual Studio ค้างขณะเริ่มต้นระบบขณะโหลดโปรเจ็กต์ล่าสุด
- อัปเดตค่ามิติทางการเงินจากรหัส X++ ใน Dynamics 365
