Miklix

Oprettelse af et opslagsfelt for en finansiel dimension i Dynamics 365

Udgivet: 16. februar 2025 kl. 11.32.42 UTC

Denne artikel forklarer, hvordan du opretter et opslagsfelt for en økonomisk dimension i Dynamics 365 for Operations, herunder et X++ kodeeksempel.


Denne side er blevet maskinoversat fra engelsk for at gøre den tilgængelig for så mange mennesker som muligt. Desværre er maskinoversættelse endnu ikke en perfekt teknologi, så der kan forekomme fejl. Hvis du foretrækker det, kan du se den originale engelske version her:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

Oplysningerne i dette indlæg er baseret på Dynamics 365 for Operations, men det meste vil også fungere til Dynamics AX 2012 (se nedenfor).

Jeg fik for nylig til opgave at skabe et nyt felt, hvor det skulle være muligt at specificere en enkelt økonomisk dimension, i dette tilfælde Produkt. Selvfølgelig skal det nye felt også være i stand til at slå op på de gyldige værdier for denne dimension.

Dette er lidt mere kompliceret end et almindeligt opslag i en tabel, men hvis du ved hvordan, er det faktisk ikke så slemt.

Heldigvis giver standardapplikationen en praktisk opslagsformular (DimensionLookup), der kan bruges til formålet, hvis man bare fortæller hvilken dimensionsattribut der skal slås op.

Først skal du oprette selve formularfeltet. Dette kan være baseret på et tabelfelt eller en redigeringsmetode, betyder ikke noget for selve opslag, men på den ene eller anden måde skal den bruge den udvidede datatype DimensionValue.

Du skal derefter oprette en OnLookup-hændelseshandler for feltet. For at oprette en hændelseshandler skal du højreklikke på OnLookup-hændelsen for feltet og derefter vælge "Kopiér hændelseshåndteringsmetode". Du kan derefter indsætte en tom hændelseshåndteringsmetode i en klasse og redigere den derfra.

Bemærk: Det meste af dette vil også fungere for Dynamics AX 2012, men i stedet for at oprette en hændelseshandler, kan du tilsidesætte formularfeltets opslagsmetode.

Hændelseshandleren skal se nogenlunde sådan ud (erstat formularnavn og feltnavn efter 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å LinkedInFastgør på Pinterest

Mikkel Bang Christensen

Om forfatteren

Mikkel Bang Christensen
Mikkel er skaberen og ejeren af miklix.com. Han har over 20 års erfaring som professionel computerprogrammør/softwareudvikler og er i øjeblikket fuldtidsansat i en stor europæisk IT-virksomhed. Når han ikke blogger, bruger han sin fritid på en lang række interesser, hobbyer og aktiviteter, som i et vist omfang afspejles i de mange forskellige emner, der dækkes på dette websted.