Miklix

Skapa ett uppslagsfält för en finansiell dimension i Dynamics 365

Publicerad: 16 februari 2025 kl. 11:34:07 UTC

Den här artikeln förklarar hur du skapar ett uppslagsfält för en finansiell dimension i Dynamics 365 for Operations, inklusive ett X++-kodexempel.


Denna sida har maskinöversatts från engelska för att göra den tillgänglig för så många som möjligt. Tyvärr är maskinöversättning ännu inte en fulländad teknik, så fel kan uppstå. Om du föredrar det kan du se den engelska originalversionen här:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

Informationen i det här inlägget är baserad på Dynamics 365 for Operations, men det mesta kommer även att fungera för Dynamics AX 2012 (se nedan).

Jag fick nyligen i uppdrag att skapa ett nytt område där det ska vara möjligt att specificera en enda finansiell dimension, i det här fallet Produkt. Naturligtvis bör det nya fältet också kunna slå upp de giltiga värdena för denna dimension.

Det här är lite mer komplicerat än en vanlig uppslagning i en tabell, men om du vet hur är det faktiskt inte så illa.

Lyckligtvis tillhandahåller standardapplikationen ett bekvämt uppslagsformulär (DimensionLookup) som kan användas för ändamålet, om du bara berättar vilket dimensionsattribut som ska slås upp.

Först måste du skapa själva formulärfältet. Detta kan baseras på ett tabellfält eller en redigeringsmetod, spelar ingen roll för själva uppslagningen, men på ett eller annat sätt måste den använda den utökade datatypen DimensionValue.

Du måste sedan skapa en OnLookup-händelsehanterare för fältet. För att skapa en händelsehanterare, högerklicka på OnLookup-händelsen för fältet och välj sedan "Kopiera händelsehanterarmetod". Du kan sedan klistra in en tom händelsehanterarmetod i en klass och redigera den därifrån.

Observera: Det mesta av detta fungerar även för Dynamics AX 2012, men istället för att skapa en händelsehanterare kan du åsidosätta formulärfältets uppslagsmetod.

Händelsehanteraren måste se ut ungefär så här (ersätt formulärnamn och fältnamn vid 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);
}
Dela på BlueskyDela på FacebookDela på LinkedInDela på TumblrDela på XDela på LinkedInFäst på Pinterest

Mikkel Bang Christensen

Om författaren

Mikkel Bang Christensen
Mikkel är skaparen och ägaren av miklix.com. Han har över 20 års erfarenhet som professionell datorprogrammerare/mjukvaruutvecklare och är för närvarande heltidsanställd på ett stort europeiskt IT-bolag. När han inte bloggar ägnar han sin fritid åt en mängd olika intressen, hobbies och aktiviteter, vilket i viss mån kan återspeglas i de olika ämnen som behandlas på den här webbplatsen.