డైనమిక్స్ AX 2012 లో సిస్ఆపరేషన్ డేటా కాంట్రాక్ట్ క్లాసులో ఒక క్వైరీని ఉపయోగించడం
ప్రచురణ: 16 ఫిబ్రవరి, 2025 1:24:42 AM UTCకి
ఈ వ్యాసం డైనమిక్స్ AX 2012 (మరియు ఆపరేషన్స్ కొరకు డైనమిక్స్ 365) లో సిస్ఆపరేషన్ డేటా కాంట్రాక్ట్ తరగతికి యూజర్-కాన్ఫిగర్ చేయగల మరియు ఫిల్టర్ చేయగల క్వైరీని ఎలా జోడించాలనే వివరాలను పరిశీలిస్తుంది.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
ఈ పోస్ట్ లోని సమాచారం డైనమిక్స్ AX 2012 R3 ఆధారంగా రూపొందించబడింది. ఇది ఇతర వెర్షన్లకు చెల్లుబాటు కావచ్చు లేదా కాకపోవచ్చు. (అప్ డేట్: ఆపరేషన్స్ కొరకు డైనమిక్స్ 365లో కూడా ఇది పనిచేస్తుందని నేను ధృవీకరించగలను)
సిస్ఆపరేషన్ ఫ్రేమ్ వర్క్ లో ఒక ప్రశ్నను ఎలా పేర్కొనాలి మరియు ప్రారంభించాలి అనే వివరాలను నేను ఎల్లప్పుడూ మర్చిపోతాను. నేను చేస్తున్న బ్యాచ్ జాబ్స్ చాలావరకు యూజర్ కాన్ఫిగర్ క్వైరీల మీద ఆధారపడి ఉండవని నేను అనుకుంటున్నాను, కానీ ప్రతిసారీ నేను అలాంటి బ్యాచ్ ఉద్యోగం చేయాల్సిన అవసరం ఉంది, కాబట్టి ఈ పోస్ట్ కూడా నా స్వంత రిఫరెన్స్ కోసం.
మొదట, డేటా కాంట్రాక్ట్ తరగతిలో, క్వైరీ ఒక స్ట్రింగ్ లో ప్యాక్ చేయబడి నిల్వ చేయబడుతుంది. దీని పార్మ్ పద్ధతిని AifQueryTypeAttribute లక్షణంతో అలంకరించాలి, (ఈ ఉదాహరణలో నేను సేల్స్ అప్డేట్ క్వైరీని ఉపయోగించాను, కానీ మీరు దీనిని ఏదైనా 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());
}
మీరు క్వైరీని ప్రారంభించాలనుకుంటే (ఉదాహరణకు, పరిధులను జోడించండి), మీరు ఇనిట్ క్వెరీ పద్ధతిని అమలు చేయాలి:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
కంట్రోలర్ క్లాస్ నుండి ఈ పద్ధతికి కాల్ చేయాలని మీరు నిర్ధారించుకోవాలి.