Dynamics AX 2012 में SysOperation डेटा कॉन्ट्रैक्ट क्लास में क्वेरी का उपयोग करना
प्रकाशित: 16 फ़रवरी 2025 को 1:23:14 am UTC बजे
आखरी अपडेट: 12 जनवरी 2026 को 8:47:24 am UTC बजे
यह आर्टिकल Dynamics AX 2012 (और Dynamics 365 for Operations) में SysOperation डेटा कॉन्ट्रैक्ट क्लास में यूज़र-कॉन्फ़िगरेबल और फ़िल्टरेबल क्वेरी जोड़ने के तरीके के बारे में डिटेल्स बताता है।
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
इस पोस्ट में दी गई जानकारी Dynamics AX 2012 R3 पर आधारित है। यह दूसरे वर्शन के लिए वैलिड हो भी सकती है और नहीं भी। (अपडेट: मैं कन्फर्म कर सकता हूँ कि यह Dynamics 365 for Operations पर भी काम करता है)
मैं हमेशा 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);
}
आपको यह पक्का करना होगा कि आप इस मेथड को कंट्रोलर क्लास से कॉल करें।
अग्रिम पठन
यदि आपको यह पोस्ट पसंद आई हो, तो आपको ये सुझाव भी पसंद आ सकते हैं:
- Dynamics AX 2012 में data() और buf2Buf() के बीच अंतर
- Dynamics AX 2012 में किस उपवर्ग को तत्काल बनाना है, यह जानने के लिए SysExtension फ्रेमवर्क का उपयोग करना
- Dynamics AX 2012 में X++ से सीधे AIF दस्तावेज़ सेवाएँ कॉल करना
