Dynamics AX 2012 ရှိ SysOperation Data Contract Class တွင် Query တစ်ခုကို အသုံးပြုခြင်း။
ထုတ်ဝေသည်- ၂၀၂၅၊ ဖေဖော်ဝါရီ ၁၆ UTC ၀၁:၂၇:၅၇
နောက်ဆုံး မွမ်းမံပြင်ဆင်သည်- ၂၀၂၆၊ ဇန်နဝါရီ ၁၂ UTC ၀၈:၄၇:၄၃
ဤဆောင်းပါးသည် Dynamics AX 2012 (နှင့် Dynamics 365 for Operations) ရှိ SysOperation data contract class သို့ user-configure လုပ်နိုင်သော နှင့် filter လုပ်နိုင်သော query တစ်ခုကို မည်သို့ထည့်သွင်းရမည်ကို အသေးစိတ်ဖော်ပြထားပါသည်။
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
ဤပို့စ်ရှိ အချက်အလက်များသည် Dynamics AX 2012 R3 ကို အခြေခံထားပါသည်။ အခြားဗားရှင်းများအတွက် မှန်ကန်နိုင်သည် သို့မဟုတ် မမှန်ကန်နိုင်ပါ။ (အပ်ဒိတ်- ၎င်းသည် Dynamics 365 for Operations တွင်လည်း အလုပ်လုပ်ကြောင်း ကျွန်ုပ် အတည်ပြုနိုင်ပါသည်)
SysOperation framework မှာ query တစ်ခုကို ဘယ်လို specify လုပ်ပြီး initialize လုပ်ရမလဲဆိုတဲ့ အသေးစိတ်အချက်အလက်တွေကို ကျွန်တော် အမြဲမေ့နေတတ်ပါတယ်။ ကျွန်တော်လုပ်နေတဲ့ batch job အများစုဟာ user-configurable query တွေအပေါ် အခြေခံထားတာမဟုတ်ပေမယ့် တစ်ခါတစ်ရံမှာ ဒီလို batch job မျိုးကို လုပ်ရတာကြောင့် ဒီ post ကလည်း ကျွန်တော့်ရဲ့ reference အတွက်ပါ။
ပထမဦးစွာ၊ data contract class မှာ၊ query ကို string တစ်ခုထဲမှာ packed သိမ်းဆည်းထားမှာပါ။ သူ့ရဲ့ parm method ကို AifQueryTypeAttribute attribute နဲ့ အလှဆင်ထားရပါမယ်၊ ဒီလိုပါပဲ (ဒီဥပမာမှာ SalesUpdate query ကို သုံးထားပါတယ်၊ ဒါပေမယ့် ဒါကို ဘယ် AOT query နဲ့မဆို အစားထိုးနိုင်ပါတယ်):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
controller class မှ query ကို ဆုံးဖြတ်စေလိုပါက empty string ကိုလည်း အသုံးပြုနိုင်ပါသည်။ ထိုသို့ဆိုလျှင် helper method အချို့ကို အကောင်အထည်ဖော်ရန် လိုအပ်ပါသည် (query ကို ဝင်ရောက်ကြည့်ရှုရန် လိုအပ်သည့်အခါတွင် သင့်ကိုယ်ပိုင်အဆင်ပြေစေရန် မည်သို့ပင်ဖြစ်စေ အကောင်အထည်ဖော်သင့်သည်)။
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
query ကို initialize လုပ်ရန် လိုအပ်ပါက (ဥပမာ၊ range များထည့်ရန်)၊ initQuery method ကို implement လုပ်သင့်သည်။
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
ဒီ method ကို controller class ကနေ call လုပ်ဖို့ သေချာအောင်လုပ်ဖို့ လိုပါတယ်။
နောက်ထပ်စာဖတ်ခြင်း။
ဤပို့စ်ကို သင်နှစ်သက်ပါက၊ ဤအကြံပြုချက်များကို သင်လည်း နှစ်သက်နိုင်ပါသည်-
- Dynamics AX 2012 တွင် ဒဿမများ အားလုံးဖြင့် Real တစ်ခုသို့ လိုင်းတစ်ခုသို့ ပြောင်းပါ။
- Dynamics AX 2012 ရှိ data() နှင့် buf2Buf() ကွာခြားချက်
- AIF Document Services ကို Dynamics AX 2012 တွင် X++ မှ တိုက်ရိုက်ခေါ်ဆိုခြင်း။
