إنشاء حقل بحث لبعد مالي في Dynamics 365
نُشرت: ١٦ فبراير ٢٠٢٥ م في ١١:٣٢:٣٩ ص UTC
تشرح هذه المقالة كيفية إنشاء حقل بحث لبعد مالي في Dynamics 365 for Operations، بما في ذلك مثال لرمز X++.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
تعتمد المعلومات الموجودة في هذا المنشور على Dynamics 365 for Operations، ولكن معظمها سيعمل أيضًا مع Dynamics AX 2012 (انظر أدناه).
لقد تم تكليفي مؤخرًا بإنشاء حقل جديد حيث من الممكن تحديد بُعد مالي واحد، في هذه الحالة المنتج. بالطبع، يجب أن يكون الحقل الجديد قادرًا أيضًا على البحث عن القيم الصالحة لهذا البعد.
يعد هذا الأمر أكثر تعقيدًا بعض الشيء من البحث العادي في جدول، ولكن إذا كنت تعرف كيفية القيام بذلك، فلن يكون الأمر سيئًا للغاية في الواقع.
لحسن الحظ، يوفر التطبيق القياسي نموذج بحث ملائم (DimensionLookup) يمكن استخدامه لهذا الغرض، إذا أخبرته فقط بسمة البعد التي يجب البحث عنها.
أولاً، تحتاج إلى إنشاء حقل النموذج نفسه. يمكن أن يكون ذلك بناءً على حقل جدول أو طريقة تحرير، ولا يهم بالنسبة لعملية البحث نفسها، ولكن بطريقة أو بأخرى يجب أن يستخدم نوع البيانات الممتد DimensionValue.
ستحتاج بعد ذلك إلى إنشاء معالج حدث OnLookup للحقل. لإنشاء معالج حدث، انقر بزر الماوس الأيمن فوق حدث OnLookup للحقل، ثم اختر "نسخ طريقة معالج الحدث". يمكنك بعد ذلك لصق طريقة معالج حدث فارغة في فئة وتحريرها من هناك.
ملاحظة: ستعمل معظم هذه الخطوات مع Dynamics AX 2012 أيضًا، ولكن بدلاً من إنشاء معالج حدث، يمكنك تجاوز طريقة البحث في حقل النموذج.
يجب أن يبدو معالج الحدث على هذا النحو (استبدل اسم النموذج واسم الحقل حسب الضرورة):
FormControlEventHandler(formControlStr( MyForm,
MyProductDimField),
FormControlEventType::Lookup)
]
public static void MyProductDimField_OnLookup( FormControl _sender,
FormControlEventArgs _e)
{
FormStringControl control;
Args args;
FormRun formRun;
DimensionAttribute dimAttribute;
;
dimAttribute = DimensionAttribute::findByName('Product');
args = new Args();
args.record(dimAttribute);
args.caller(_sender);
args.name(formStr(DimensionLookup));
formRun = classFactory.formRunClass(args);formRun.init();
control = _sender as FormStringControl;
control.performFormLookup(formRun);
}