Miklix

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.


Denne siden er maskinoversatt fra engelsk for å gjøre den tilgjengelig for så mange som mulig. Dessverre er maskinoversettelse ennå ikke en fullkommen teknologi, så det kan forekomme feil. Hvis du foretrekker det, kan du se den engelske originalversjonen her:

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);
}
Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFest på Pinterest

Mikkel Bang Christensen

Om forfatteren

Mikkel Bang Christensen
Mikkel er skaperen og eieren av miklix.com. Han har over 20 års erfaring som profesjonell dataprogrammerer/programvareutvikler og er for tiden ansatt på fulltid i et stort europeisk IT-selskap. Når han ikke blogger, bruker han fritiden sin på en lang rekke interesser, hobbyer og aktiviteter, noe som til en viss grad kan gjenspeiles i de mange ulike temaene som dekkes på dette nettstedet.