డైనమిక్స్ AX 2012 లో X++ కోడ్ నుండి ఎనమ్ యొక్క ఎలిమెంట్ లను ఎలా గుర్తించాలి
ప్రచురణ: 15 ఫిబ్రవరి, 2025 11:11:17 PM UTCకి
ఈ వ్యాసం ఎక్స్ ++ కోడ్ ఉదాహరణతో సహా డైనమిక్స్ AX 2012 లో బేస్ ఎనమ్ యొక్క మూలకాలను ఎలా లెక్కించాలో మరియు లూప్ చేయాలో వివరిస్తుంది.
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
ఈ పోస్ట్ లోని సమాచారం డైనమిక్స్ AX 2012 R3 ఆధారంగా రూపొందించబడింది. ఇది ఇతర వెర్షన్లకు చెల్లుబాటు కావచ్చు లేదా కాకపోవచ్చు.
ఒక గణనలో ప్రతి మూలకానికి ఒక విలువను ప్రదర్శించాల్సిన ఒక ఫారాన్ని నేను ఇటీవల సృష్టిస్తున్నాను. ఫీల్డ్ లను మాన్యువల్ గా సృష్టించడానికి బదులుగా (మరియు ఎనమ్ ఎప్పుడైనా సవరించబడితే ఫారాన్ని నిర్వహించాల్సిన అవసరం ఉంది), నేను దానిని డైనమిక్ గా అమలు చేయాలని నిర్ణయించుకున్నాను, తద్వారా ఇది రన్ టైమ్ లో ఆటోమేటిక్ గా ఫీల్డ్ లను డిజైన్ కు జోడిస్తుంది.
ఏదేమైనా, ఒక గణనలోని విలువలను తెలుసుకోవడం చాలా సులభం అయినప్పటికీ, ఎలాగో మీకు తెలిసిన తర్వాత, కొంచెం గందరగోళంగా ఉందని నేను త్వరలోనే కనుగొన్నాను.
మీరు ఖచ్చితంగా డిక్టెనమ్ తరగతితో ప్రారంభించాలి. మీరు గమనించినట్లుగా, ఇండెక్స్ మరియు విలువ రెండింటి నుండి పేరు మరియు లేబుల్ వంటి సమాచారాన్ని పొందడానికి ఈ తరగతిలో అనేక పద్ధతులు ఉన్నాయి.
సూచిక మరియు విలువ మధ్య వ్యత్యాసం ఏమిటంటే, సూచిక అనేది ఎన్యూమ్ లోని ఒక మూలకం యొక్క సంఖ్య, ఎనమ్ యొక్క మూలకాలను సున్నా నుండి ప్రారంభించి క్రమానుగతంగా లెక్కిస్తే, విలువ అనేది మూలకం యొక్క వాస్తవ "విలువ" లక్షణం. చాలా గణనలు 0 నుండి వరుసగా సంఖ్య చేయబడిన విలువలను కలిగి ఉన్నందున, ఒక మూలకం యొక్క సూచిక మరియు విలువ తరచుగా ఒకేలా ఉంటాయి, కానీ ఖచ్చితంగా ఎల్లప్పుడూ కాదు.
కానీ ఒక ఎనమ్ కు ఏ విలువలు ఉన్నాయో మీకు ఎలా తెలుస్తుంది? ఇక్కడే గందరగోళం ఏర్పడుతుంది. డిక్టెనమ్ తరగతిలో విలువలు () అని పిలువబడే ఒక పద్ధతి ఉంది. ఈ పద్ధతి ఎనమ్ యొక్క విలువల జాబితాను తిరిగి ఇస్తుందని మీరు ఆశించవచ్చు, కానీ అది స్పష్టంగా చాలా సులభం, కాబట్టి బదులుగా ఇది ఎనమ్ కలిగి ఉన్న విలువల సంఖ్యను తిరిగి ఇస్తుంది. ఏదేమైనా, విలువల సంఖ్యకు వాస్తవ విలువలతో సంబంధం లేదు, కాబట్టి మీరు విలువ ఆధారిత పద్ధతులను కాకుండా సూచిక-ఆధారిత పద్ధతులను పిలవడానికి ఈ సంఖ్యను ప్రాతిపదికగా ఉపయోగించాలి.
బదులుగా వారు ఈ పద్ధతికి సూచికలు () అని పేరు పెట్టి ఉంటే, ఇది తక్కువ గందరగోళంగా ఉండేది ;-)
ఎనమ్ విలువలు (మరియు స్పష్టంగా ఈ "సూచికలు") X++లో శ్రేణి మరియు కంటైనర్ ఇండెక్స్ ల మాదిరిగా కాకుండా 0 వద్ద ప్రారంభమవుతాయని గుర్తుంచుకోండి, ఇవి 1 వద్ద ప్రారంభమవుతాయి, కాబట్టి గణనలోని మూలకాలను లూప్ చేయడానికి మీరు ఇలాంటిది చేయవచ్చు:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
ఇది ఎన్యూమ్ లోని ప్రతి ఎలిమెంట్ యొక్క సింబల్ మరియు లేబుల్ ని ఇన్ఫోలాగ్ కు అవుట్ పుట్ చేస్తుంది.