Miklix

డైనమిక్స్ 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;
}

బదులుగా కంట్రోలర్ క్లాస్ ద్వారా క్వైరీ నిర్ణయించబడాలని మీరు కోరుకుంటే, మీరు ఖాళీ స్ట్రింగ్ ను కూడా ఉపయోగించవచ్చు. అలాంటప్పుడు, మీరు కొన్ని సహాయక పద్ధతులను కూడా అమలు చేయాల్సి ఉంటుంది (మీరు క్వైరీని యాక్సెస్ చేయాల్సి వచ్చినప్పుడు మీ స్వంత సౌలభ్యం కోసం మీరు ఎలాగైనా అమలు చేయాలి):

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);
}

కంట్రోలర్ క్లాస్ నుండి ఈ పద్ధతికి కాల్ చేయాలని మీరు నిర్ధారించుకోవాలి.

బ్లూస్కీలో షేర్ చేయండిఫేస్‌బుక్‌లో షేర్ చేయండిలింక్డ్ఇన్‌లో షేర్ చేయండిTumblrలో షేర్ చేయండిX లో షేర్ చేయండిలింక్డ్ఇన్‌లో షేర్ చేయండిPinterestలో పిన్ చేయండి

మికెల్ బ్యాంగ్ క్రిస్టెన్సేన్

రచయిత గురుంచి

మికెల్ బ్యాంగ్ క్రిస్టెన్సేన్
మిక్కెల్ miklix.com సృష్టికర్త మరియు యజమాని. అతనికి ప్రొఫెషనల్ కంప్యూటర్ ప్రోగ్రామర్/సాఫ్ట్‌వేర్ డెవలపర్‌గా 20 సంవత్సరాలకు పైగా అనుభవం ఉంది మరియు ప్రస్తుతం ఒక పెద్ద యూరోపియన్ ఐటీ కార్పొరేషన్‌లో పూర్తి సమయం ఉద్యోగం చేస్తున్నాడు. బ్లాగింగ్ చేయనప్పుడు, అతను తన ఖాళీ సమయాన్ని విస్తృత శ్రేణి ఆసక్తులు, అభిరుచులు మరియు కార్యకలాపాలపై గడుపుతాడు, ఇవి కొంతవరకు ఈ వెబ్‌సైట్‌లో కవర్ చేయబడిన వివిధ అంశాలలో ప్రతిబింబిస్తాయి.