Miklix

डायनॅमिक्स एएक्स 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;
}

जर तुम्हाला क्वेरी कंट्रोलर क्लासने ठरवायची असेल, तर तुम्ही रिकाम्या स्ट्रिंगचा वापर देखील करू शकता. अशा परिस्थितीत, तुम्हाला काही मदतनीस पद्धती देखील लागू कराव्या लागतील (ज्या तुम्हाला क्वेरी अॅक्सेस करण्याची आवश्यकता असताना तुमच्या स्वतःच्या सोयीसाठी तुम्ही कदाचित अंमलात आणल्या पाहिजेत):

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 चे निर्माता आणि मालक आहेत. त्यांना व्यावसायिक संगणक प्रोग्रामर/सॉफ्टवेअर डेव्हलपर म्हणून २० वर्षांहून अधिक अनुभव आहे आणि सध्या ते एका मोठ्या युरोपियन आयटी कॉर्पोरेशनमध्ये पूर्णवेळ नोकरी करतात. ब्लॉगिंग करत नसताना, ते आपला मोकळा वेळ विविध आवडी, छंद आणि क्रियाकलापांमध्ये घालवतात, जे काही प्रमाणात या वेबसाइटवर समाविष्ट असलेल्या विविध विषयांमध्ये प्रतिबिंबित होऊ शकतात.