Kreiranje polja za pretraživanje za finansijsku dimenziju u Dynamics 365
Objavljeno: 16. februar 2025. u 11:36:32 UTC
Ovaj članak objašnjava kako kreirati polje za pretraživanje za finansijsku dimenziju u Dynamics 365 for Operations, uključujući primjer X++ koda.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Informacije u ovom postu zasnovane su na Dynamics 365 for Operations, ali većina njih će raditi i za Dynamics AX 2012 (pogledajte ispod).
Nedavno sam dobio zadatak da kreiram novo polje u kojem bi trebalo biti moguće specificirati jednu finansijsku dimenziju, u ovom slučaju Proizvod. Naravno, novo polje bi također trebalo biti u mogućnosti da traži važeće vrijednosti ove dimenzije.
Ovo je malo komplikovanije od običnog traženja u tabeli, ali ako znate kako, zapravo i nije tako loše.
Na sreću, standardna aplikacija pruža zgodan obrazac za traženje (DimensionLookup) koji se može koristiti u tu svrhu, ako joj samo kažete koji atribut dimenzije da traži.
Prvo morate kreirati samo polje obrasca. Ovo može biti zasnovano na polju tabele ili metodi uređivanja, nije važno za samo traženje, ali na ovaj ili onaj način mora koristiti prošireni tip podataka DimensionValue.
Zatim morate kreirati OnLookup obrađivač događaja za polje. Da biste kreirali rukovalac događajem, kliknite desnim tasterom miša na događaj OnLookup za polje, a zatim izaberite "Kopiraj metod rukovaoca događajem". Zatim možete zalijepiti praznu metodu rukovanja događajima u klasu i urediti je odatle.
Napomena: Većina ovoga će raditi i za Dynamics AX 2012, ali umjesto kreiranja rukovatelja događajima, možete nadjačati metodu traženja polja obrasca.
Obrađivač događaja mora izgledati otprilike ovako (zamijenite ime obrasca i naziv polja po potrebi):
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);
}