Een opzoekveld maken voor een financiële dimensie in Dynamics 365
Gepubliceerd: 16 februari 2025 om 11:33:56 UTC
In dit artikel wordt uitgelegd hoe u een opzoekveld voor een financiële dimensie in Dynamics 365 for Operations maakt, inclusief een X++-codevoorbeeld.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
De informatie in dit bericht is gebaseerd op Dynamics 365 for Operations, maar het meeste werkt ook voor Dynamics AX 2012 (zie hieronder).
Ik kreeg onlangs de opdracht om een nieuw veld te maken waarin het mogelijk zou moeten zijn om één financiële dimensie te specificeren, in dit geval Product. Uiteraard zou het nieuwe veld ook de geldige waarden van deze dimensie moeten kunnen opzoeken.
Dit is iets ingewikkelder dan een gewone opzoekactie in een tabel, maar als je weet hoe het moet, valt het eigenlijk wel mee.
Gelukkig biedt de standaardtoepassing een handig opzoekformulier (DimensionLookup) dat hiervoor kan worden gebruikt. U hoeft alleen maar aan te geven welk dimensiekenmerk moet worden opgezocht.
Eerst moet u het formulierveld zelf maken. Dit kan gebaseerd zijn op een tabelveld of een bewerkingsmethode, het maakt niet uit voor de opzoekactie zelf, maar op de een of andere manier moet het het uitgebreide gegevenstype DimensionValue gebruiken.
Vervolgens moet u een OnLookup-gebeurtenishandler voor het veld maken. Om een gebeurtenishandler te maken, klikt u met de rechtermuisknop op de OnLookup-gebeurtenis voor het veld en kiest u 'Gebeurtenishandlermethode kopiëren'. Vervolgens kunt u een lege gebeurtenishandlermethode in een klasse plakken en deze vanaf daar bewerken.
Let op: het meeste hiervan werkt ook voor Dynamics AX 2012, maar in plaats van een gebeurtenisafhandeling te maken, kunt u de opzoekmethode van het formulierveld overschrijven.
De gebeurtenisafhandeling moet er ongeveer zo uitzien (vervang indien nodig de formuliernaam en veldnaam):
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);
}