כיצד לחזור על האלמנטים של Enum מקוד X++ ב- Dynamics AX 2012
פורסם: 15 בפברואר 2025 בשעה 23:11:13 UTC
עודכן לאחרונה: 12 בינואר 2026 בשעה 8:42:13 UTC
מאמר זה מסביר כיצד לבצע ספירה וללולאה של רכיבי enum בסיסי ב-Dynamics 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 ישתנה אי פעם), החלטתי ליישם אותו באופן דינמי כך שה-enum יוסיף אוטומטית את השדות לעיצוב בזמן ריצה.
עם זאת, עד מהרה גיליתי שביצוע איטרציות על הערכים באנום, אמנם קל למדי ברגע שיודעים איך, הוא קצת מבלבל.
ברור שעליך להתחיל עם המחלקה DictEnum. כפי שתראה, למחלקה זו יש מספר שיטות להשגת מידע כגון שם ותווית הן מהאינדקס והן מהערך.
ההבדל בין אינדקס לערך הוא ש-index הוא המספר של אלמנט ב-enum, אם אלמנטי ה-enum ממוספרים ברצף החל מאפס, בעוד ש-value הוא המאפיין "ערך" בפועל של האלמנט. מכיוון שרוב ה-enums כוללים ערכים הממוספרים ברצף החל מאפס, האינדקס והערך של אלמנט יהיו לעתים קרובות זהים, אך בהחלט לא תמיד.
אבל איך יודעים אילו ערכים יש ל-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 אל יומן המידע.
קריאה נוספת
אם נהניתם מהפוסט הזה, אולי תאהבו גם את ההצעות הבאות:
- עיצוב מחרוזות עם מאקרו ו-strFmt ב- Dynamics AX 2012
- המר ריאל למחרוזת עם כל הספרות העשרוניות ב- Dynamics AX 2012
- שימוש בשאילתה במחלקת חוזה נתונים של SysOperation ב- Dynamics AX 2012
