Dynamics AX 2012-ലെ X++ കോഡിൽ നിന്ന് ഒരു ഇനത്തിന്റെ മൂലകങ്ങൾ എങ്ങനെ മറികടക്കാം
പ്രസിദ്ധീകരിച്ചത്: 2025, ഫെബ്രുവരി 15 11:15:41 PM UTC
ഒരു എക്സ് ++ കോഡ് ഉദാഹരണം ഉൾപ്പെടെ, ഡൈനാമിക്സ് AX 2012 ലെ ഒരു ബേസ് എനത്തിന്റെ ഘടകങ്ങൾ എങ്ങനെ എണ്ണാമെന്നും ലൂപ്പ് ചെയ്യാമെന്നും ഈ ലേഖനം വിശദീകരിക്കുന്നു.
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
Dynamics AX 2012 R3 അടിസ്ഥാനമാക്കിയുള്ളതാണ് ഈ പോസ്റ്റിലെ വിവരങ്ങൾ. ഇത് മറ്റ് പതിപ്പുകൾക്ക് സാധുതയുള്ളതോ അല്ലാത്തതോ ആകാം.
ഒരു കണക്കിൽ ഓരോ മൂലകത്തിനും ഒരു മൂല്യം പ്രദർശിപ്പിക്കേണ്ട ഒരു ഫോം ഞാൻ അടുത്തിടെ സൃഷ്ടിക്കുകയായിരുന്നു. ഫീൽഡുകൾ സ്വമേധയാ സൃഷ്ടിക്കുന്നതിനുപകരം (എൻനം എപ്പോഴെങ്കിലും പരിഷ്കരിച്ചിട്ടുണ്ടെങ്കിൽ ഫോം നിലനിർത്തേണ്ടതുണ്ട്), ഇത് ചലനാത്മകമായി നടപ്പിലാക്കാൻ ഞാൻ തീരുമാനിച്ചു, അങ്ങനെ ഇത് യാന്ത്രികമായി രൂപകൽപ്പനയിലേക്ക് ഫീൽഡുകൾ ചേർക്കും.
എന്നിരുന്നാലും, ഒരു കണക്കിലെ മൂല്യങ്ങളെ ശരിക്കും വിശകലനം ചെയ്യുന്നത്, എങ്ങനെയെന്ന് നിങ്ങൾ അറിഞ്ഞുകഴിഞ്ഞാൽ എളുപ്പമാണെങ്കിലും, അൽപ്പം ആശയക്കുഴപ്പമുണ്ടാക്കുന്നുവെന്ന് ഞാൻ താമസിയാതെ കണ്ടെത്തി.
നിങ്ങൾ തീർച്ചയായും ഡിക്റ്റെനം ക്ലാസിൽ നിന്ന് ആരംഭിക്കേണ്ടതുണ്ട്. നിങ്ങൾ കാണും പോലെ, സൂചികയിൽ നിന്നും മൂല്യത്തിൽ നിന്നും പേര്, ലേബൽ തുടങ്ങിയ വിവരങ്ങൾ നേടുന്നതിന് ഈ ക്ലാസിന് നിരവധി രീതികളുണ്ട്.
സൂചികയും മൂല്യവും തമ്മിലുള്ള വ്യത്യാസം എന്തെന്നാൽ, സൂചിക എന്നത് എനത്തിലെ ഒരു മൂലകത്തിന്റെ സംഖ്യയാണ്, എന്നത്തിന്റെ മൂലകങ്ങൾ പൂജ്യത്തിൽ നിന്ന് ആരംഭിച്ച് തുടർച്ചയായി അക്കമിട്ടിട്ടുണ്ടെങ്കിൽ, മൂല്യം മൂലകത്തിന്റെ യഥാർത്ഥ "മൂല്യ" സ്വത്താണ്. മിക്ക കണക്കെടുപ്പുകൾക്കും 0 മുതൽ തുടർച്ചയായി അക്കമിട്ട മൂല്യങ്ങൾ ഉള്ളതിനാൽ, ഒരു മൂലകത്തിന്റെ സൂചികയും മൂല്യവും പലപ്പോഴും ഒന്നുതന്നെയായിരിക്കും , പക്ഷേ തീർച്ചയായും എല്ലായ്പ്പോഴും അല്ല.
എന്നാൽ ഒരു കണക്കിന് ഏതൊക്കെ മൂല്യങ്ങളുണ്ടെന്ന് നിങ്ങൾക്ക് എങ്ങനെ അറിയാം? ഇവിടെയാണ് ആശയക്കുഴപ്പം ഉണ്ടാകുന്നത്. ഡിക്റ്റെനം ക്ലാസിന് മൂല്യങ്ങൾ () എന്ന് വിളിക്കുന്ന ഒരു രീതിയുണ്ട്. ഈ രീതി എനത്തിന്റെ മൂല്യങ്ങളുടെ ഒരു ലിസ്റ്റ് തിരികെ നൽകുമെന്ന് നിങ്ങൾ പ്രതീക്ഷിക്കാം, പക്ഷേ അത് വളരെ എളുപ്പമായിരിക്കും, അതിനാൽ പകരം ഇത് എനത്തിൽ അടങ്ങിയിരിക്കുന്ന മൂല്യങ്ങളുടെ എണ്ണം നൽകുന്നു. എന്നിരുന്നാലും, മൂല്യങ്ങളുടെ എണ്ണത്തിന് യഥാർത്ഥ മൂല്യങ്ങളുമായി യാതൊരു ബന്ധവുമില്ല, അതിനാൽ മൂല്യാധിഷ്ഠിത രീതികളെയല്ല, സൂചിക അടിസ്ഥാനമാക്കിയുള്ള രീതികളെ വിളിക്കുന്നതിനുള്ള അടിസ്ഥാനമായി നിങ്ങൾ ഈ നമ്പർ ഉപയോഗിക്കേണ്ടതുണ്ട്.
പകരം അവർ ഈ രീതി സൂചികകൾ () എന്ന് പേരിട്ടിരുന്നെങ്കിൽ, അത് ആശയക്കുഴപ്പം കുറയ്ക്കുമായിരുന്നു ;-)
എക്സ് ++ ലെ അറേ, കണ്ടെയ്നർ സൂചികകളിൽ നിന്ന് വ്യത്യസ്തമായി, എൻനം മൂല്യങ്ങൾ (പ്രത്യക്ഷത്തിൽ ഈ "സൂചികകൾ") 0 ൽ ആരംഭിക്കുന്നുവെന്ന് ഓർമ്മിക്കുക, ഇത് 1 ൽ ആരംഭിക്കുന്നു, അതിനാൽ ഒരു കണക്കിലെ മൂലകങ്ങളെ ലൂപ്പ് ചെയ്യാൻ നിങ്ങൾക്ക് ഇതുപോലുള്ള എന്തെങ്കിലും ചെയ്യാൻ കഴിയും:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
ഇത് കണക്കിലെ ഓരോ മൂലകത്തിന്റെയും ചിഹ്നവും ലേബലും ഇൻഫോലോഗിലേക്ക് ഔട്ട്പുട്ട് ചെയ്യും.