Miklix

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.


Deze pagina is machinaal uit het Engels vertaald om hem voor zoveel mogelijk mensen toegankelijk te maken. Helaas is machinevertaling nog geen geperfectioneerde technologie, dus er kunnen fouten optreden. Als je dat liever hebt, kun je hier de originele Engelse versie bekijken:

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);
}
Delen op BlueskyDelen op FacebookDelen op LinkedInDelen op TumblrDelen op XDelen op LinkedInPin op Pinterest

Mikkel Bang Christensen

Over de auteur

Mikkel Bang Christensen
Mikkel is de bedenker en eigenaar van miklix.com. Hij heeft meer dan 20 jaar ervaring als professioneel computerprogrammeur/softwareontwikkelaar en werkt momenteel fulltime voor een groot Europees IT-bedrijf. Als hij niet blogt, besteedt hij zijn vrije tijd aan een breed scala aan interesses, hobby's en activiteiten, die tot op zekere hoogte weerspiegeld kunnen worden in de verscheidenheid aan onderwerpen op deze website.