Miklix

డైనమిక్స్ AX 2012 లో X++ కోడ్ నుండి ఎనమ్ యొక్క ఎలిమెంట్ లను ఎలా గుర్తించాలి

ప్రచురణ: 15 ఫిబ్రవరి, 2025 11:11:17 PM UTCకి
చివరిగా నవీకరించబడింది: 12 జనవరి, 2026 8:42:15 AM UTCకి

ఈ వ్యాసం డైనమిక్స్ AX 2012లో బేస్ ఎనియం యొక్క మూలకాలను ఎలా లెక్కించాలో మరియు లూప్ చేయాలో వివరిస్తుంది, ఇందులో X++ కోడ్ ఉదాహరణ కూడా ఉంటుంది.


వీలైనంత ఎక్కువ మందికి అందుబాటులో ఉండేలా ఈ పేజీని ఇంగ్లీష్ నుండి యాంత్రికంగా అనువదించారు. దురదృష్టవశాత్తు, యాంత్రిక అనువాదం ఇంకా పరిపూర్ణమైన సాంకేతికత కాదు, కాబట్టి లోపాలు సంభవించవచ్చు. మీరు కోరుకుంటే, మీరు అసలు ఆంగ్ల సంస్కరణను ఇక్కడ చూడవచ్చు:

How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012

ఈ పోస్ట్‌లోని సమాచారం డైనమిక్స్ AX 2012 R3 ఆధారంగా రూపొందించబడింది. ఇది ఇతర వెర్షన్‌లకు చెల్లుబాటు కావచ్చు లేదా చెల్లకపోవచ్చు.

నేను ఇటీవల ఒక ఎన్యుమ్‌లోని ప్రతి మూలకానికి విలువను ప్రదర్శించడానికి అవసరమైన ఫారమ్‌ను సృష్టిస్తున్నాను. ఫీల్డ్‌లను మాన్యువల్‌గా సృష్టించడం కంటే (ఆపై ఎన్యుమ్ ఎప్పుడైనా సవరించబడితే ఫారమ్‌ను నిర్వహించడం అవసరం), నేను దానిని డైనమిక్‌గా అమలు చేయాలని నిర్ణయించుకున్నాను, తద్వారా ఇది రన్ సమయంలో డిజైన్‌కు ఫీల్డ్‌లను స్వయంచాలకంగా జోడిస్తుంది.

అయితే, ఒక ఎన్యూమ్‌లోని విలువలను పునరావృతం చేయడం మీకు తెలిసిన తర్వాత చాలా సులభం అయినప్పటికీ, కొంచెం గందరగోళంగా ఉంటుందని నేను త్వరలోనే కనుగొన్నాను.

మీరు స్పష్టంగా DictEnum క్లాస్‌తో ప్రారంభించాలి. మీరు చూడబోతున్నట్లుగా, ఈ క్లాస్‌లో ఇండెక్స్ మరియు విలువ రెండింటి నుండి పేరు మరియు లేబుల్ వంటి సమాచారాన్ని పొందేందుకు అనేక పద్ధతులు ఉన్నాయి.

ఇండెక్స్ మరియు విలువ మధ్య వ్యత్యాసం ఏమిటంటే, ఇండెక్స్ అనేది ఎన్యుమ్‌లోని ఒక మూలకం యొక్క సంఖ్య, ఒకవేళ ఎన్యుమ్ యొక్క మూలకాలను సున్నా నుండి ప్రారంభించి వరుసగా లెక్కించినట్లయితే, విలువ అనేది మూలకం యొక్క వాస్తవ "విలువ" ఆస్తి. చాలా ఎన్యుమ్‌లు 0 నుండి వరుసగా లెక్కించబడిన విలువలను కలిగి ఉన్నందున, ఒక మూలకం యొక్క ఇండెక్స్ మరియు విలువ తరచుగా ఒకే విధంగా ఉంటాయి, కానీ ఖచ్చితంగా ఎల్లప్పుడూ కాదు.

కానీ ఒక enum ఏ విలువలను కలిగి ఉందో మీకు ఎలా తెలుస్తుంది? ఇక్కడే ఇది గందరగోళంగా మారుతుంది. DictEnum తరగతికి values() అనే పద్ధతి ఉంది. ఈ పద్ధతి enum యొక్క విలువల జాబితాను తిరిగి ఇస్తుందని మీరు ఆశించవచ్చు, కానీ అది స్పష్టంగా చాలా సులభం అవుతుంది, కాబట్టి బదులుగా ఇది enum కలిగి ఉన్న విలువల సంఖ్యను తిరిగి ఇస్తుంది. అయితే, విలువల సంఖ్యకు వాస్తవ విలువలతో సంబంధం లేదు, కాబట్టి మీరు ఈ సంఖ్యను విలువ-ఆధారిత పద్ధతులను కాకుండా సూచిక-ఆధారిత పద్ధతులను పిలవడానికి ఆధారంగా ఉపయోగించాలి.

ఈ పద్ధతికి indexes() అని పేరు పెట్టి ఉంటే, అంత గందరగోళంగా ఉండేది కాదు ;-)

X++లో 1 నుండి ప్రారంభమయ్యే శ్రేణి మరియు కంటైనర్ సూచికల మాదిరిగా కాకుండా, enum విలువలు (మరియు స్పష్టంగా ఈ "సూచికలు") 0 నుండి ప్రారంభమవుతాయని గుర్తుంచుకోండి, కాబట్టి enumలోని మూలకాలపై లూప్ చేయడానికి మీరు ఇలా చేయవచ్చు:

DictEnum dictEnum = new DictEnum(enumNum(SalesStatus));
Counter  c;
;

for (c = 0; c < dictEnum.values(); c++)
{
    info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}

ఇది ఎన్యూమ్‌లోని ప్రతి మూలకం యొక్క చిహ్నాన్ని మరియు లేబుల్‌ను ఇన్ఫోలాగ్‌కు అవుట్‌పుట్ చేస్తుంది.

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

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


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

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

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

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