ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ X++ ಕೋಡ್ ನಿಂದ ಎನಮ್ ನ ಅಂಶಗಳನ್ನು ಹೇಗೆ ಕಂಡುಹಿಡಿಯುವುದು
ಪ್ರಕಟಣೆ: ಫೆಬ್ರವರಿ 15, 2025 ರಂದು 11:11:22 ಅಪರಾಹ್ನ UTC ಸಮಯಕ್ಕೆ
ಕೊನೆಯದಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ: ಜನವರಿ 12, 2026 ರಂದು 08:42:22 ಪೂರ್ವಾಹ್ನ 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 ರಿಂದ ಅನುಕ್ರಮವಾಗಿ ಸಂಖ್ಯೆ ಮಾಡಲಾದ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿರುವುದರಿಂದ, ಒಂದು ಅಂಶದ ಸೂಚ್ಯಂಕ ಮತ್ತು ಮೌಲ್ಯವು ಹೆಚ್ಚಾಗಿ ಒಂದೇ ಆಗಿರುತ್ತದೆ, ಆದರೆ ಖಂಡಿತವಾಗಿಯೂ ಯಾವಾಗಲೂ ಅಲ್ಲ.
ಆದರೆ ಎನಮ್ ಯಾವ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿದೆ ಎಂದು ನಿಮಗೆ ಹೇಗೆ ತಿಳಿಯುತ್ತದೆ? ಇಲ್ಲಿಯೇ ಅದು ಗೊಂದಲಕ್ಕೊಳಗಾಗುತ್ತದೆ. DictEnum ವರ್ಗವು values() ಎಂಬ ವಿಧಾನವನ್ನು ಹೊಂದಿದೆ. ಈ ವಿಧಾನವು enum ನ ಮೌಲ್ಯಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಎಂದು ನೀವು ನಿರೀಕ್ಷಿಸಬಹುದು, ಆದರೆ ಅದು ಸ್ಪಷ್ಟವಾಗಿ ತುಂಬಾ ಸುಲಭವಾಗಿರುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದು enum ಹೊಂದಿರುವ ಮೌಲ್ಯಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಮೌಲ್ಯಗಳ ಸಂಖ್ಯೆಯು ನಿಜವಾದ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಯಾವುದೇ ಸಂಬಂಧವನ್ನು ಹೊಂದಿಲ್ಲ, ಆದ್ದರಿಂದ ನೀವು ಈ ಸಂಖ್ಯೆಯನ್ನು ಸೂಚ್ಯಂಕ ಆಧಾರಿತ ವಿಧಾನಗಳನ್ನು ಕರೆಯಲು ಆಧಾರವಾಗಿ ಬಳಸಬೇಕಾಗುತ್ತದೆ, ಮೌಲ್ಯ ಆಧಾರಿತ ವಿಧಾನಗಳಲ್ಲ.
ಅವರು ಈ ವಿಧಾನಕ್ಕೆ indexes() ಎಂದು ಹೆಸರಿಸಿದ್ದರೆ, ಅದು ಕಡಿಮೆ ಗೊಂದಲಮಯವಾಗಿರುತ್ತಿತ್ತು ;-)
ಎನಮ್ ಮೌಲ್ಯಗಳು (ಮತ್ತು ಸ್ಪಷ್ಟವಾಗಿ ಈ "ಸೂಚ್ಯಂಕಗಳು") 0 ರಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ ಎಂಬುದನ್ನು ನೆನಪಿನಲ್ಲಿಡಿ, X++ ನಲ್ಲಿ ಅರೇ ಮತ್ತು ಕಂಟೇನರ್ ಸೂಚ್ಯಂಕಗಳು 1 ರಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ, ಆದ್ದರಿಂದ ಎನಮ್ನಲ್ಲಿರುವ ಅಂಶಗಳ ಮೇಲೆ ಲೂಪ್ ಮಾಡಲು ನೀವು ಈ ರೀತಿ ಮಾಡಬಹುದು:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
ಇದು ಎನಮ್ನಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಅಂಶದ ಚಿಹ್ನೆ ಮತ್ತು ಲೇಬಲ್ ಅನ್ನು ಇನ್ಫೋಲಾಗ್ಗೆ ಔಟ್ಪುಟ್ ಮಾಡುತ್ತದೆ.
ಹೆಚ್ಚಿನ ಓದಿಗೆ
ನೀವು ಈ ಪೋಸ್ಟ್ ಅನ್ನು ಆನಂದಿಸಿದ್ದರೆ, ನೀವು ಈ ಸಲಹೆಗಳನ್ನು ಸಹ ಇಷ್ಟಪಡಬಹುದು:
- ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ X++ ನಿಂದ ನೇರವಾಗಿ AIF ದಾಖಲೆ ಸೇವೆಗಳಿಗೆ ಕರೆ ಮಾಡುವುದು
- ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ ಯಾವ ಉಪವರ್ಗವನ್ನು ತ್ವರಿತವಾಗಿ ಮಾಡಬೇಕು ಎಂಬುದನ್ನು ಕಂಡುಹಿಡಿಯಲು SysExtension ಫ್ರೇಮ್ವರ್ಕ್ ಅನ್ನು ಬಳಸುವುದು
- ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ ಮ್ಯಾಕ್ರೊ ಮತ್ತು strFmt ನೊಂದಿಗೆ ಸ್ಟ್ರಿಂಗ್ ಫಾರ್ಮ್ಯಾಟಿಂಗ್
