كيفية تكرار عناصر Enum من كود X++ في Dynamics AX 2012
نُشرت: ١٥ فبراير ٢٠٢٥ م في ١١:٠٩:٥٥ م UTC
آخر تحديث: ١٢ يناير ٢٠٢٦ م في ٨:٤١:٥١ ص UTC
تشرح هذه المقالة كيفية تعداد عناصر التعداد الأساسي والتكرار عليها في Dynamics AX 2012، بما في ذلك مثال على كود X++.
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
تستند المعلومات الواردة في هذا المنشور إلى Dynamics AX 2012 R3. وقد تكون صالحة أو غير صالحة للإصدارات الأخرى.
كنتُ مؤخراً بصدد إنشاء نموذج يتطلب عرض قيمة لكل عنصر في تعداد. وبدلاً من إنشاء الحقول يدوياً (ثم الحاجة إلى صيانة النموذج في حال تعديل التعداد)، قررتُ تنفيذه ديناميكياً بحيث يُضاف الحقل تلقائياً إلى التصميم أثناء التشغيل.
ومع ذلك، سرعان ما اكتشفت أن التكرار الفعلي للقيم في تعداد، على الرغم من سهولته بمجرد معرفة كيفية القيام بذلك، إلا أنه أمر مربك بعض الشيء.
من الواضح أنك بحاجة للبدء بفئة DictEnum. كما سترى، تحتوي هذه الفئة على عدة طرق للحصول على معلومات مثل الاسم والتسمية من كل من الفهرس والقيمة.
الفرق بين الفهرس والقيمة هو أن الفهرس هو رقم العنصر في التعداد، إذا كانت عناصر التعداد مرقمة تسلسليًا بدءًا من الصفر، بينما القيمة هي خاصية "القيمة" الفعلية للعنصر. وبما أن معظم التعدادات لها قيم مرقمة تسلسليًا من الصفر، فغالبًا ما يكون الفهرس والقيمة متطابقين، ولكن ليس دائمًا.
لكن كيف تعرف القيم التي يحتويها تعداد؟ هنا يكمن الالتباس. تحتوي فئة DictEnum على دالة تُسمى values(). قد تتوقع أن تُعيد هذه الدالة قائمة بقيم التعداد، لكن هذا سيكون سهلاً للغاية، لذا فهي تُعيد عدد القيم التي يحتويها التعداد. مع ذلك، لا علاقة لعدد القيم بالقيم الفعلية، لذا عليك استخدام هذا العدد كأساس لاستدعاء الدوال التي تعتمد على الفهرس، وليس الدوال التي تعتمد على القيمة.
لو أنهم سمّوا هذه الطريقة indexes() بدلاً من ذلك، لكان الأمر أقل إرباكاً ;-)
ضع في اعتبارك أيضًا أن قيم التعداد (وهذه "الفهارس" على ما يبدو) تبدأ من 0، على عكس فهارس المصفوفات والحاويات في X++، والتي تبدأ من 1، لذا للتكرار على العناصر في التعداد، يمكنك القيام بشيء كهذا:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
سيؤدي هذا إلى إخراج رمز وتسمية كل عنصر في التعداد إلى سجل المعلومات.
قراءات إضافية
إذا أعجبك هذا المنشور، فقد تعجبك أيضًا هذه الاقتراحات:
- تحديد فئة المستند والاستعلام عن خدمة AIF في Dynamics AX 2012
- نظرة عامة سريعة على إطار عمل Dynamics AX 2012 SysOperation
- استخدام إطار عمل SysExtension لمعرفة الفئة الفرعية التي يجب إنشاؤها في Dynamics AX 2012
