डायनॅमिक्स एएक्स 2012 मध्ये सिसऑपरेशन डेटा कॉन्ट्रॅक्ट क्लासमध्ये क्वेरी वापरणे
प्रकाशित: १६ फेब्रुवारी, २०२५ रोजी १:२४:४० AM UTC
हा लेख डायनॅमिक्स एएक्स 2012 (आणि ऑपरेशन्ससाठी डायनॅमिक्स 365) मधील सिसऑपरेशन डेटा कॉन्ट्रॅक्ट क्लासमध्ये वापरकर्ता-कॉन्फिगर करण्यायोग्य आणि फिल्टर करण्यायोग्य क्वेरी कशी जोडावी याबद्दल तपशीलावर जातो
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
या पोस्टमधील माहिती डायनॅमिक्स एएक्स २०१२ आर ३ वर आधारित आहे. हे इतर आवृत्त्यांसाठी वैध असू शकते किंवा असू शकत नाही. (अद्यतन: मी पुष्टी करू शकतो की हे ऑपरेशन्ससाठी डायनॅमिक्स 365 वर देखील कार्य करते)
सिसऑपरेशन फ्रेमवर्कमध्ये प्रश्न कसे निर्दिष्ट करावे आणि प्रारंभ कसा करावा याबद्दलतपशील मी नेहमीच विसरलेला दिसतो. मला असे वाटते की मी करत असलेल्या बहुतेक बॅच नोकऱ्या वापरकर्त्या-कॉन्फिगर करण्यायोग्य प्रश्नांवर आधारित नाहीत, परंतु प्रत्येक वेळी मला अशा बॅचची नोकरी करण्याची आवश्यकता असते, म्हणून ही पोस्ट माझ्या स्वत: च्या संदर्भासाठी देखील आहे.
प्रथम, डेटा कॉन्ट्रॅक्ट वर्गात, क्वेरी स्ट्रिंगमध्ये पॅक केली जाईल. त्याची परम पद्धत एआयएफक्वेरीटाइपएट्रिब्यूट वैशिष्ट्यासह सजवली गेली पाहिजे, जसे की (या उदाहरणात मी सेल्सअपडेट क्वेरी वापरली आहे, परंतु आपण हे कोणत्याही एओटी क्वेरीसह बदलू शकता):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
त्याऐवजी नियंत्रक वर्गाद्वारे क्वेरी चा निर्णय घ्यावा असे आपल्याला वाटत असल्यास, आपण रिक्त स्ट्रिंग देखील वापरू शकता. अशा परिस्थितीत, आपल्याला काही मदतनीस पद्धती देखील अंमलात आणण्याची आवश्यकता आहे (जी आपल्याला क्वेरीमध्ये प्रवेश करण्याची आवश्यकता असताना आपण कदाचित आपल्या स्वत: च्या सोयीसाठी कोणत्याही प्रकारे अंमलात आणली पाहिजे):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
आपल्याला क्वेरी सुरू करण्याची आवश्यकता असल्यास (उदाहरणार्थ, श्रेणी जोडा), आपण एक इनिटक्वेरी पद्धत अंमलात आणली पाहिजे:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
आपल्याला नियंत्रक वर्गातून या पद्धतीवर कॉल करण्याची खात्री करणे आवश्यक आहे.