Miklix

டைனமிக்ஸ் AX 2012 இல் X++ குறியீட்டிலிருந்து ஒரு Enum இன் கூறுகளை எவ்வாறு மறுபரிசீலனை செய்வது

வெளியிடப்பட்டது: 15 பிப்ரவரி, 2025 அன்று பிற்பகல் 11:11:20 UTC
கடைசியாகப் புதுப்பிக்கப்பட்டது: 12 ஜனவரி, 2026 அன்று AM 8:42:18 UTC

இந்தக் கட்டுரை, டைனமிக்ஸ் AX 2012 இல் ஒரு அடிப்படை எனமின் கூறுகளை எவ்வாறு கணக்கிடுவது மற்றும் லூப் செய்வது என்பதை விளக்குகிறது, இதில் X++ குறியீட்டு எடுத்துக்காட்டும் அடங்கும்.


இந்தப் பக்கம் முடிந்தவரை பலருக்கு அணுகக்கூடியதாக இருக்க வேண்டும் என்பதற்காக ஆங்கிலத்திலிருந்து இயந்திர மொழிபெயர்ப்பு செய்யப்பட்டது. துரதிர்ஷ்டவசமாக, இயந்திர மொழிபெயர்ப்பு இன்னும் முழுமையான தொழில்நுட்பமாக இல்லை, எனவே பிழைகள் ஏற்படலாம். நீங்கள் விரும்பினால், அசல் ஆங்கிலப் பதிப்பை இங்கே காணலாம்:

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

இந்தப் பதிவில் உள்ள தகவல்கள் Dynamics AX 2012 R3 ஐ அடிப்படையாகக் கொண்டவை. இது மற்ற பதிப்புகளுக்கு செல்லுபடியாகலாம் அல்லது செல்லுபடியாகாமல் இருக்கலாம்.

ஒரு enum-ல் உள்ள ஒவ்வொரு உறுப்புக்கும் ஒரு மதிப்பைக் காட்ட வேண்டிய ஒரு படிவத்தை நான் சமீபத்தில் உருவாக்கிக்கொண்டிருந்தேன். புலங்களை கைமுறையாக உருவாக்குவதற்குப் பதிலாக (பின்னர் enum எப்போதாவது மாற்றியமைக்கப்பட்டால் படிவத்தைப் பராமரிக்க வேண்டியிருக்கும்), இயக்க நேரத்தில் வடிவமைப்பில் புலங்களை தானாகவே சேர்க்கும் வகையில் அதை டைனமிக் முறையில் செயல்படுத்த முடிவு செய்தேன்.

இருப்பினும், ஒரு எனுமத்தில் உள்ள மதிப்புகளை மீண்டும் மீண்டும் சொல்வது, உங்களுக்குத் தெரிந்தவுடன் போதுமான அளவு எளிதாக இருந்தாலும், சற்று குழப்பமானதாக இருப்பதை நான் விரைவில் கண்டுபிடித்தேன்.

நீங்கள் நிச்சயமாக DictEnum வகுப்பிலிருந்து தொடங்க வேண்டும். நீங்கள் பார்ப்பது போல், இந்த வகுப்பில் குறியீடு மற்றும் மதிப்பு இரண்டிலிருந்தும் பெயர் மற்றும் லேபிள் போன்ற தகவல்களைப் பெறுவதற்கு பல முறைகள் உள்ளன.

குறியீட்டிற்கும் மதிப்புக்கும் உள்ள வேறுபாடு என்னவென்றால், குறியீட்டெண் என்பது enum இல் உள்ள ஒரு தனிமத்தின் எண்ணாகும், enum இன் கூறுகள் பூஜ்ஜியத்திலிருந்து தொடங்கி வரிசையாக எண்ணப்பட்டிருந்தால், மதிப்பு என்பது தனிமத்தின் உண்மையான "மதிப்பு" பண்பு. பெரும்பாலான enumகள் 0 இலிருந்து வரிசையாக எண்ணப்பட்ட மதிப்புகளைக் கொண்டிருப்பதால், ஒரு தனிமத்தின் குறியீட்டெண் மற்றும் மதிப்பு பெரும்பாலும் ஒரே மாதிரியாக இருக்கும், ஆனால் நிச்சயமாக எப்போதும் இருக்காது.

ஆனால் ஒரு enum எந்த மதிப்புகளைக் கொண்டுள்ளது என்பதை நீங்கள் எப்படி அறிவீர்கள்? இங்குதான் இது குழப்பமடைகிறது. DictEnum வகுப்பில் values() எனப்படும் ஒரு முறை உள்ளது. இந்த முறை enum இன் மதிப்புகளின் பட்டியலைத் தரும் என்று நீங்கள் எதிர்பார்க்கலாம், ஆனால் அது வெளிப்படையாக மிகவும் எளிதாக இருக்கும், எனவே அதற்கு பதிலாக enum கொண்டிருக்கும் மதிப்புகளின் எண்ணிக்கையைத் தரும். இருப்பினும், மதிப்புகளின் எண்ணிக்கை உண்மையான மதிப்புகளுடன் எந்த தொடர்பும் இல்லை, எனவே மதிப்பு அடிப்படையிலான முறைகளை அல்ல, குறியீட்டு அடிப்படையிலான முறைகளை அழைப்பதற்கான அடிப்படையாக இந்த எண்ணைப் பயன்படுத்த வேண்டும்.

இந்த முறைக்கு indexes() என்று பெயரிட்டிருந்தால், குழப்பம் குறைவாக இருந்திருக்கும் ;-)

மேலும், enum மதிப்புகள் (மற்றும் வெளிப்படையாக இந்த "குறியீடுகள்") 0 இல் தொடங்குகின்றன என்பதை நினைவில் கொள்ளுங்கள், X++ இல் உள்ள வரிசை மற்றும் கொள்கலன் குறியீடுகளைப் போலல்லாமல், அவை 1 இல் தொடங்குகின்றன, எனவே ஒரு 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)));
}

இது enum இல் உள்ள ஒவ்வொரு தனிமத்தின் சின்னத்தையும் லேபிளையும் infolog-க்கு வெளியிடும்.

மேலும் படிக்க

இந்த இடுகை உங்களுக்குப் பிடித்திருந்தால், இந்த பரிந்துரைகளையும் நீங்கள் விரும்பலாம்:


ப்ளூஸ்கையில் பகிரவும்பேஸ்புக்கில் பகிரவும்LinkedIn இல் பகிரவும்Tumblr இல் பகிரவும்X இல் பகிரவும்LinkedIn இல் பகிரவும்பின்டரஸ்டில் பின் செய்யவும்

மிக்கேல் கிறிஸ்டென்சன்

எழுத்தாளர் பற்றி

மிக்கேல் கிறிஸ்டென்சன்
மிக்கல் என்பவர் miklix.com இன் படைப்பாளர் மற்றும் உரிமையாளர் ஆவார். அவருக்கு 20 ஆண்டுகளுக்கும் மேலான தொழில்முறை கணினி நிரலாளர்/மென்பொருள் உருவாக்குநராக அனுபவம் உள்ளது, மேலும் தற்போது ஒரு பெரிய ஐரோப்பிய ஐடி நிறுவனத்தில் முழுநேரப் பணியாளராக உள்ளார். வலைப்பதிவு செய்யாதபோது, ​​அவர் தனது ஓய்வு நேரத்தை பரந்த அளவிலான ஆர்வங்கள், பொழுதுபோக்குகள் மற்றும் செயல்பாடுகளில் செலவிடுகிறார், இது இந்த வலைத்தளத்தில் உள்ளடக்கப்பட்ட பல்வேறு தலைப்புகளில் ஓரளவுக்கு பிரதிபலிக்கக்கூடும்.