Skapa ett uppslagsfält för en finansiell dimension i Dynamics 365
Publicerad: 16 februari 2025 kl. 11:34:07 UTC
Senast uppdaterad: 12 januari 2026 kl. 08:56:16 UTC
Den här artikeln förklarar hur man skapar ett sökfä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 fungerar även för Dynamics AX 2012 (se nedan).
Jag fick nyligen i uppdrag att skapa ett nytt fält där det ska vara möjligt att ange en enda finansiell dimension, i det här fallet Produkt. Naturligtvis ska det nya fältet också kunna söka upp giltiga värden för denna dimension.
Det här är lite mer komplicerat än en vanlig sökning i en tabell, men om du vet hur är det faktiskt inte så illa.
Lyckligtvis tillhandahåller standardapplikationen ett bekvämt sökformulär (DimensionLookup) som kan användas för ändamålet, om du bara anger vilket dimensionsattribut som ska sökas efter.
Först måste du skapa själva formulärfältet. Detta kan baseras på ett tabellfält eller en redigeringsmetod, det spelar ingen roll för själva sökningen, men på ett eller annat sätt måste den använda den utökade datatypen DimensionValue.
Du behöver sedan skapa en OnLookup-händelsehanterare för fältet. För att skapa en händelsehanterare högerklickar du på OnLookup-händelsen för fältet och väljer sedan "Kopiera händelsehanterarmetod". Du kan sedan klistra in en tom händelsehanterarmetod i en klass och redigera den därifrån.
Obs! 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 sökmetod.
Händelsehanteraren måste se ut ungefär så här (ersätt formulärnamn och fältnamn 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);
}
Vidare läsning
Om du gillade det här inlägget kanske du också gillar dessa förslag:
- Lägg till visnings- eller redigeringsmetod via tillägg i Dynamics 365
- Uppdatera Financial Dimension Value från X++ Code i Dynamics 365
- Visual Studio hänger sig vid start under laddning av senaste projekt
