Miklix

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

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

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

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

మరింత చదవడానికి

మీరు ఈ పోస్ట్‌ను ఆస్వాదించినట్లయితే, మీరు ఈ సూచనలను కూడా ఇష్టపడవచ్చు:


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

మికెల్ క్రిస్టెన్సేన్

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

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