డైనమిక్స్ AX 2012 లో సిస్ఆపరేషన్ డేటా కాంట్రాక్ట్ క్లాసులో ఒక క్వైరీని ఉపయోగించడం
ప్రచురణ: 16 ఫిబ్రవరి, 2025 1:24:42 AM UTCకి
చివరిగా నవీకరించబడింది: 12 జనవరి, 2026 8:47:30 AM UTCకి
ఈ వ్యాసం డైనమిక్స్ AX 2012 (మరియు ఆపరేషన్స్ కోసం డైనమిక్స్ 365) లోని SysOperation డేటా కాంట్రాక్ట్ క్లాస్కు యూజర్-కాన్ఫిగర్ చేయగల మరియు ఫిల్టర్ చేయగల ప్రశ్నను ఎలా జోడించాలో వివరాలను వివరిస్తుంది.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
ఈ పోస్ట్లోని సమాచారం డైనమిక్స్ AX 2012 R3 ఆధారంగా రూపొందించబడింది. ఇది ఇతర వెర్షన్లకు చెల్లుబాటు కావచ్చు లేదా చెల్లకపోవచ్చు. (నవీకరణ: ఇది ఆపరేషన్స్ కోసం డైనమిక్స్ 365లో కూడా పనిచేస్తుందని నేను నిర్ధారించగలను)
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);
}
మీరు ఈ పద్ధతిని కంట్రోలర్ క్లాస్ నుండి కాల్ చేయాలని నిర్ధారించుకోవాలి.
మరింత చదవడానికి
మీరు ఈ పోస్ట్ను ఆస్వాదించినట్లయితే, మీరు ఈ సూచనలను కూడా ఇష్టపడవచ్చు:
- డైనమిక్స్ AX 2012లో అన్ని దశాంశాలతో రియల్ను స్ట్రింగ్గా మార్చండి.
- డైనమిక్స్ AX 2012లో X++ నుండి నేరుగా AIF డాక్యుమెంట్ సేవలను కాల్ చేయడం
- డైనమిక్స్ AX 2012 లో X++ కోడ్ నుండి ఎనమ్ యొక్క ఎలిమెంట్ లను ఎలా గుర్తించాలి
