டைனமிக்ஸ் 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 இல் உள்ள கூறுகளை லூப் செய்ய நீங்கள் இதைப் போல ஏதாவது செய்யலாம்:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
இது enum இல் உள்ள ஒவ்வொரு தனிமத்தின் சின்னத்தையும் லேபிளையும் infolog-க்கு வெளியிடும்.
மேலும் படிக்க
இந்த இடுகை உங்களுக்குப் பிடித்திருந்தால், இந்த பரிந்துரைகளையும் நீங்கள் விரும்பலாம்:
- டைனமிக்ஸ் AX 2012 இல் AIF சேவைக்கான ஆவண வகுப்பு மற்றும் கேள்வியை அடையாளம் காணுதல்
- AIF ஆவண சேவைகளை X++ இலிருந்து நேரடியாக அழைக்கிறது Dynamics AX 2012
- டைனமிக்ஸ் AX 2012 இல் எந்த துணைப்பிரிவை உடனடிப்படுத்த வேண்டும் என்பதைக் கண்டறிய SysExtension கட்டமைப்பைப் பயன்படுத்துதல்.
