డైనమిక్స్ 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లోని మూలకాలపై లూప్ చేయడానికి మీరు ఇలా చేయవచ్చు:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
ఇది ఎన్యూమ్లోని ప్రతి మూలకం యొక్క చిహ్నాన్ని మరియు లేబుల్ను ఇన్ఫోలాగ్కు అవుట్పుట్ చేస్తుంది.
మరింత చదవడానికి
మీరు ఈ పోస్ట్ను ఆస్వాదించినట్లయితే, మీరు ఈ సూచనలను కూడా ఇష్టపడవచ్చు:
- డైనమిక్స్ AX 2012 లో "డేటా కాంట్రాక్ట్ ఆబ్జెక్ట్ కోసం మెటాడేటా క్లాస్ నిర్వచించబడలేదు" అనే లోపం
- డైనమిక్స్ AX 2012 లో డేటా() మరియు buf2Buf() మధ్య వ్యత్యాసం
- Dynamics AX 2012 SysOperation Framework శీఘ్ర అవలోకనం
