Opprette et oppslagsfelt for en økonomisk dimensjon i Dynamics 365
Publisert: 16. februar 2025 kl. 11:33:54 UTC
Denne artikkelen forklarer hvordan du oppretter et oppslagsfelt for en økonomisk dimensjon i Dynamics 365 for Operations, inkludert et X++-kodeeksempel.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Informasjonen i dette innlegget er basert på Dynamics 365 for Operations, men det meste vil også fungere for Dynamics AX 2012 (se nedenfor).
Jeg fikk nylig i oppgave å lage et nytt felt der det skulle være mulig å spesifisere en enkelt økonomisk dimensjon, i dette tilfellet Produkt. Selvfølgelig skal det nye feltet også kunne slå opp de gyldige verdiene for denne dimensjonen.
Dette er litt mer komplisert enn et vanlig oppslag i en tabell, men hvis du vet hvordan, er det faktisk ikke så ille.
Heldigvis gir standardapplikasjonen et praktisk oppslagsskjema (DimensionLookup) som kan brukes til formålet, hvis du bare forteller hvilken dimensjonsattributt som skal søkes opp.
Først må du lage selve skjemafeltet. Dette kan være basert på et tabellfelt eller en redigeringsmetode, spiller ingen rolle for selve oppslaget, men på en eller annen måte må den bruke den utvidede datatypen DimensionValue.
Du må deretter opprette en OnLookup hendelsesbehandler for feltet. For å opprette en hendelsesbehandler, høyreklikk OnLookup-hendelsen for feltet, og velg deretter "Kopier hendelsesbehandlermetode". Du kan deretter lime inn en tom hendelsesbehandlermetode i en klasse og redigere den derfra.
Merk: Det meste av dette vil fungere for Dynamics AX 2012 også, men i stedet for å opprette en hendelsesbehandler, kan du overstyre skjemafeltets oppslagsmetode.
Hendelsesbehandleren må se omtrent slik ut (erstatt skjemanavn og feltnavn etter behov):
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);
}