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