डायनॅमिक्स एएक्स 2012 मध्ये सिसऑपरेशन डेटा कॉन्ट्रॅक्ट क्लासमध्ये क्वेरी वापरणे
प्रकाशित: १६ फेब्रुवारी, २०२५ रोजी १:२४:४० AM UTC
शेवटचे अपडेट केलेले: १२ जानेवारी, २०२६ रोजी ८:४७:३० AM UTC
हा लेख डायनॅमिक्स एएक्स २०१२ (आणि ऑपरेशन्ससाठी डायनॅमिक्स ३६५) मध्ये सिसऑपरेशन डेटा कॉन्ट्रॅक्ट क्लासमध्ये वापरकर्ता-कॉन्फिगर करण्यायोग्य आणि फिल्टर करण्यायोग्य क्वेरी कशी जोडायची याबद्दल तपशीलवार चर्चा करतो.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
या पोस्टमधील माहिती डायनॅमिक्स AX २०१२ R3 वर आधारित आहे. ती इतर आवृत्त्यांसाठी वैध असू शकते किंवा नसू शकते. (अपडेट: मी पुष्टी करू शकतो की हे ऑपरेशन्ससाठी डायनॅमिक्स ३६५ वर देखील कार्य करते)
SysOperation फ्रेमवर्कमध्ये क्वेरी कशी निर्दिष्ट करायची आणि कशी सुरू करायची याबद्दलचे तपशील मी नेहमीच विसरतो असे दिसते. मला वाटते की मी करत असलेले बहुतेक बॅच जॉब्स वापरकर्ता-कॉन्फिगर करण्यायोग्य क्वेरींवर आधारित नाहीत, परंतु कधीकधी मला असे बॅच जॉब करावे लागते, म्हणून ही पोस्ट माझ्या स्वतःच्या संदर्भासाठी देखील आहे.
प्रथम, डेटा कॉन्ट्रॅक्ट क्लासमध्ये, क्वेरी एका स्ट्रिंगमध्ये पॅक करून संग्रहित केली जाईल. त्याची parm पद्धत AifQueryTypeAttribute या गुणधर्माने सजवलेली असणे आवश्यक आहे, जसे की (या उदाहरणात मी SalesUpdate क्वेरी वापरली आहे, परंतु तुम्ही ती कोणत्याही AOT क्वेरीने बदलू शकता):
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());
}
जर तुम्हाला क्वेरी सुरू करायची असेल (उदाहरणार्थ, रेंज जोडा), तर तुम्ही initQuery पद्धत लागू करावी:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
तुम्हाला कंट्रोलर क्लासमधून ही पद्धत कॉल करायची आहे याची खात्री करावी लागेल.
पुढील वाचन
जर तुम्हाला ही पोस्ट आवडली असेल, तर तुम्हाला हे सूचना देखील आवडतील:
- डायनॅमिक्स एएक्स २०१२ मध्ये कायदेशीर अस्तित्व (कंपनी खाती) हटवा
- डायनॅमिक्स AX २०१२ मध्ये "डेटा कॉन्ट्रॅक्ट ऑब्जेक्टसाठी कोणताही मेटाडेटा वर्ग परिभाषित केलेला नाही" ही त्रुटी आली.
- डायनॅमिक्स एएक्स 2012 मध्ये एक्स ++ वरून थेट एआयएफ दस्तऐवज सेवांवर कॉल करणे
