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.
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);
}