Miklix

Dynamics AX 2012 में SysOperation डेटा कॉन्ट्रैक्ट क्लास में क्वेरी का उपयोग करना

प्रकाशित: 16 फ़रवरी 2025 को 1:23:14 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;
}

यदि आप चाहते हैं कि क्वेरी को कंट्रोलर क्लास द्वारा तय किया जाए, तो आप खाली स्ट्रिंग का भी उपयोग कर सकते हैं। उस स्थिति में, आपको कुछ सहायक विधियों को भी लागू करना होगा (जिन्हें आपको क्वेरी तक पहुँचने की आवश्यकता होने पर अपनी सुविधा के लिए वैसे भी लागू करना चाहिए):

public Query getQuery()
{
    ;

    return new Query(SysOperationHelper::base64Decode(packedQuery));
}

public void setQuery(Query _query)
{
    ;

    packedQuery = SysOperationHelper::base64Encode(_query.pack());
}

यदि आपको क्वेरी आरंभ करने की आवश्यकता है (उदाहरण के लिए, श्रेणियाँ जोड़ना), तो आपको initQuery विधि लागू करनी चाहिए:

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

आपको यह सुनिश्चित करना होगा कि आप इस विधि को नियंत्रक वर्ग से कॉल करें।

ब्लूस्काई पर साझा करेंफेसबुक पर सांझा करेंलिंक्डइन पर साझा करेंटम्बलर पर साझा करेंX पर साझा करेंलिंक्डइन पर साझा करेंPinterest पर पिन करें

मिकेल बैंग क्रिस्टेंसन

लेखक के बारे में

मिकेल बैंग क्रिस्टेंसन
मिकेल miklix.com के निर्माता और मालिक हैं। उन्हें पेशेवर कंप्यूटर प्रोग्रामर/सॉफ्टवेयर डेवलपर के रूप में 20 से अधिक वर्षों का अनुभव है और वर्तमान में वे एक बड़े यूरोपीय आईटी निगम के लिए पूर्णकालिक रूप से कार्यरत हैं। जब वे ब्लॉगिंग नहीं करते हैं, तो वे अपना खाली समय विभिन्न प्रकार की रुचियों, शौक और गतिविधियों में बिताते हैं, जो कुछ हद तक इस वेबसाइट पर शामिल किए गए विषयों की विविधता में परिलक्षित हो सकते हैं।