Miklix

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

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

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

आपल्याला क्वेरी सुरू करण्याची आवश्यकता असल्यास (उदाहरणार्थ, श्रेणी जोडा), आपण एक इनिटक्वेरी पद्धत अंमलात आणली पाहिजे:

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

आपल्याला नियंत्रक वर्गातून या पद्धतीवर कॉल करण्याची खात्री करणे आवश्यक आहे.

ब्लूस्की वर शेअर कराफेसबुक वर शेअर करालिंक्डइन वर शेअर कराटंबलर वर शेअर कराX वर शेअर करालिंक्डइन वर शेअर कराPinterest वर पिन करा

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

लेखकाबद्दल

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