Crearea unui câmp de căutare pentru o dimensiune financiară în Dynamics 365
Publicat: 16 februarie 2025 la 11:34:02 UTC
Acest articol explică cum să creați un câmp de căutare pentru o dimensiune financiară în Dynamics 365 for Operations, inclusiv un exemplu de cod X++.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Informațiile din această postare se bazează pe Dynamics 365 for Operations, dar cea mai mare parte va funcționa și pentru Dynamics AX 2012 (vezi mai jos).
Recent am fost însărcinat să creez un nou domeniu în care să fie posibilă specificarea unei singure dimensiuni financiare, în cazul de față Produs. Desigur, noul câmp ar trebui să poată căuta și valorile valide ale acestei dimensiuni.
Acest lucru este puțin mai complicat decât o căutare obișnuită într-un tabel, dar dacă știți cum, de fapt nu este prea rău.
Din fericire, aplicația standard oferă un formular de căutare convenabil (DimensionLookup) care poate fi folosit în acest scop, dacă îi spuneți ce atribut de dimensiune să căutați.
În primul rând, trebuie să creați propriul câmp de formular. Aceasta se poate baza pe un câmp de tabel sau pe o metodă de editare, nu contează pentru căutarea în sine, dar într-un fel sau altul trebuie să folosească tipul de date extins DimensionValue.
Apoi, trebuie să creați un handler de evenimente OnLookup pentru câmp. Pentru a crea un handler de evenimente, faceți clic dreapta pe evenimentul OnLookup pentru câmp, apoi alegeți „Copy event handler method”. Puteți apoi să lipiți o metodă de gestionare a evenimentelor goală într-o clasă și să o editați de acolo.
Notă: Cele mai multe dintre acestea vor funcționa și pentru Dynamics AX 2012, dar în loc să creați un handler de evenimente, puteți înlocui metoda de căutare a câmpului formularului.
Managerul de evenimente trebuie să arate cam așa (înlocuiți numele formularului și numele câmpului după caz):
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);
}