ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ X++ ಕೋಡ್ ನಿಂದ ಎನಮ್ ನ ಅಂಶಗಳನ್ನು ಹೇಗೆ ಕಂಡುಹಿಡಿಯುವುದು
ಪ್ರಕಟಣೆ: ಫೆಬ್ರವರಿ 15, 2025 ರಂದು 11:11:22 ಅಪರಾಹ್ನ UTC ಸಮಯಕ್ಕೆ
ಈ ಲೇಖನವು ಎಕ್ಸ್ ++ ಕೋಡ್ ಉದಾಹರಣೆಯನ್ನು ಒಳಗೊಂಡಂತೆ ಡೈನಾಮಿಕ್ಸ್ ಎಎಕ್ಸ್ 2012 ನಲ್ಲಿ ಬೇಸ್ ಎನಮ್ ನ ಅಂಶಗಳನ್ನು ಹೇಗೆ ಎಣಿಕೆ ಮಾಡುವುದು ಮತ್ತು ಲೂಪ್ ಮಾಡುವುದು ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತದೆ.
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
ಈ ಪೋಸ್ಟ್ ನಲ್ಲಿರುವ ಮಾಹಿತಿಯು ಡೈನಾಮಿಕ್ಸ್ ಎಎಕ್ಸ್ 2012 ಆರ್ 3 ಅನ್ನು ಆಧರಿಸಿದೆ. ಇದು ಇತರ ಆವೃತ್ತಿಗಳಿಗೆ ಮಾನ್ಯವಾಗಿರಬಹುದು ಅಥವಾ ಇಲ್ಲದಿರಬಹುದು.
ನಾನು ಇತ್ತೀಚೆಗೆ ಒಂದು ನಮೂನೆಯನ್ನು ರಚಿಸುತ್ತಿದ್ದೆ, ಅದು ಎನಮ್ ನಲ್ಲಿನ ಪ್ರತಿಯೊಂದು ಅಂಶಕ್ಕೂ ಮೌಲ್ಯವನ್ನು ಪ್ರದರ್ಶಿಸಬೇಕಾಗಿತ್ತು. ಕ್ಷೇತ್ರಗಳನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ರಚಿಸುವ ಬದಲು (ಮತ್ತು ನಂತರ ಎನಮ್ ಎಂದಾದರೂ ಮಾರ್ಪಡಿಸಿದರೆ ಫಾರ್ಮ್ ಅನ್ನು ನಿರ್ವಹಿಸುವ ಅಗತ್ಯವಿದೆ), ನಾನು ಅದನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಿರ್ಧರಿಸಿದೆ ಇದರಿಂದ ಅದು ರನ್ ಸಮಯದಲ್ಲಿ ವಿನ್ಯಾಸಕ್ಕೆ ಕ್ಷೇತ್ರಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೇರಿಸುತ್ತದೆ.
ಆದಾಗ್ಯೂ, ಒಂದು ಇನಾಮ್ನಲ್ಲಿನ ಮೌಲ್ಯಗಳ ಮೇಲೆ ನಿಜವಾಗಿಯೂ ಗಮನ ಹರಿಸುವುದು, ಹೇಗೆ ಎಂದು ನಿಮಗೆ ತಿಳಿದ ನಂತರ ಸಾಕಷ್ಟು ಸುಲಭವಾದರೂ, ಸ್ವಲ್ಪ ಗೊಂದಲಮಯವಾಗಿದೆ ಎಂದು ನಾನು ಶೀಘ್ರದಲ್ಲೇ ಕಂಡುಕೊಂಡೆ.
ನೀವು ನಿಸ್ಸಂಶಯವಾಗಿ ಡಿಕ್ಟೆನಮ್ ತರಗತಿಯಿಂದ ಪ್ರಾರಂಭಿಸಬೇಕು. ನೀವು ನೋಡುವಂತೆ, ಈ ವರ್ಗವು ಸೂಚ್ಯಂಕ ಮತ್ತು ಮೌಲ್ಯ ಎರಡರಿಂದಲೂ ಹೆಸರು ಮತ್ತು ಲೇಬಲ್ ನಂತಹ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಲು ಹಲವಾರು ವಿಧಾನಗಳನ್ನು ಹೊಂದಿದೆ.
ಸೂಚ್ಯಂಕ ಮತ್ತು ಮೌಲ್ಯದ ನಡುವಿನ ವ್ಯತ್ಯಾಸವೆಂದರೆ, ಎನಮ್ ನ ಅಂಶಗಳನ್ನು ಶೂನ್ಯದಿಂದ ಪ್ರಾರಂಭಿಸಿ ಅನುಕ್ರಮವಾಗಿ ಸಂಖ್ಯೆ ಮಾಡಿದ್ದರೆ, ಸೂಚ್ಯಂಕವು ಎನಮ್ ನಲ್ಲಿರುವ ಒಂದು ಧಾತುವಿನ ಸಂಖ್ಯೆಯಾಗಿದೆ, ಆದರೆ ಮೌಲ್ಯವು ಧಾತುವಿನ ನಿಜವಾದ "ಮೌಲ್ಯ" ಗುಣಲಕ್ಷಣವಾಗಿದೆ. ಹೆಚ್ಚಿನ ಎಣಿಕೆಗಳು 0 ರಿಂದ ಅನುಕ್ರಮವಾಗಿ ಸಂಖ್ಯೆಗಳನ್ನು ಹೊಂದಿರುವುದರಿಂದ, ಒಂದು ಧಾತುವಿನ ಸೂಚ್ಯಂಕ ಮತ್ತು ಮೌಲ್ಯವು ಸಾಮಾನ್ಯವಾಗಿ ಒಂದೇ ಆಗಿರುತ್ತದೆ, ಆದರೆ ಯಾವಾಗಲೂ ಅಲ್ಲ.
ಆದರೆ ಎನಮ್ ಯಾವ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿದೆ ಎಂದು ನಿಮಗೆ ಹೇಗೆ ತಿಳಿಯುತ್ತದೆ? ಇಲ್ಲಿ ಅದು ಗೊಂದಲಮಯವಾಗುತ್ತದೆ. ಡಿಕ್ಟೆನಮ್ ವರ್ಗವು ಮೌಲ್ಯಗಳು () ಎಂಬ ವಿಧಾನವನ್ನು ಹೊಂದಿದೆ. ಈ ವಿಧಾನವು ಎನಮ್ ನ ಮೌಲ್ಯಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ ಎಂದು ನೀವು ನಿರೀಕ್ಷಿಸಬಹುದು, ಆದರೆ ಅದು ನಿಸ್ಸಂಶಯವಾಗಿ ತುಂಬಾ ಸುಲಭ, ಆದ್ದರಿಂದ ಬದಲಿಗೆ ಇದು ಎನಮ್ ಹೊಂದಿರುವ ಮೌಲ್ಯಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಮೌಲ್ಯಗಳ ಸಂಖ್ಯೆಯು ನಿಜವಾದ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಯಾವುದೇ ಸಂಬಂಧವನ್ನು ಹೊಂದಿಲ್ಲ, ಆದ್ದರಿಂದ ನೀವು ಈ ಸಂಖ್ಯೆಯನ್ನು ಸೂಚ್ಯಂಕ-ಆಧಾರಿತ ವಿಧಾನಗಳನ್ನು ಕರೆಯಲು ಆಧಾರವಾಗಿ ಬಳಸಬೇಕು, ಮೌಲ್ಯ-ಆಧಾರಿತ ವಿಧಾನಗಳಲ್ಲ.
ಬದಲಿಗೆ ಅವರು ಈ ವಿಧಾನದ ಸೂಚ್ಯಂಕಗಳನ್ನು () ಹೆಸರಿಸಿದ್ದರೆ, ಅದು ಕಡಿಮೆ ಗೊಂದಲಮಯವಾಗುತ್ತಿತ್ತು ;-)
1 ರಿಂದ ಪ್ರಾರಂಭವಾಗುವ X ++ ನಲ್ಲಿನ ಶ್ರೇಣಿ ಮತ್ತು ಕಂಟೇನರ್ ಸೂಚ್ಯಂಕಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಎನಮ್ ಮೌಲ್ಯಗಳು (ಮತ್ತು ಸ್ಪಷ್ಟವಾಗಿ ಈ "ಸೂಚ್ಯಂಕಗಳು") 0 ನಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ ಎಂಬುದನ್ನು ನೆನಪಿನಲ್ಲಿಡಿ, ಆದ್ದರಿಂದ ಎನಮ್ ನಲ್ಲಿರುವ ಅಂಶಗಳನ್ನು ಸುತ್ತಲು ನೀವು ಈ ರೀತಿಯದ್ದನ್ನು ಮಾಡಬಹುದು:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
ಇದು ಎನಮ್ ನಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಅಂಶದ ಚಿಹ್ನೆ ಮತ್ತು ಲೇಬಲ್ ಅನ್ನು ಇನ್ಫೋಲಾಗ್ ಗೆ ಔಟ್ ಪುಟ್ ಮಾಡುತ್ತದೆ.