ایجاد یک فیلد جستجو برای یک بعد مالی در 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 برای فیلد کلیک راست کنید، سپس "Copy event handler method" را انتخاب کنید. سپس می توانید یک متد کنترل کننده رویداد خالی را در یک کلاس قرار دهید و آن را از آنجا ویرایش کنید.
متوجه: بیشتر این موارد برای 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);
}