Miklix

Skep 'n opsoekveld vir 'n finansiële dimensie in Dynamics 365

Gepubliseer: 16 Februarie 2025 om 11:36:17 UTC
Laas opgedateer: 12 Januarie 2026 om 08:56:30 UTC

Hierdie artikel verduidelik hoe om 'n opsoekveld vir 'n finansiële dimensie in Dynamics 365 for Operations te skep, insluitend 'n X++-kodevoorbeeld.


Hierdie bladsy is masjienvertaal uit Engels om dit vir soveel mense moontlik toeganklik te maak. Ongelukkig is masjienvertaling nog nie 'n volmaakte tegnologie nie, dus kan foute voorkom. As jy verkies, kan jy die oorspronklike Engelse weergawe hier sien:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

Die inligting in hierdie plasing is gebaseer op Dynamics 365 for Operations, maar die meeste daarvan sal ook vir Dynamics AX 2012 werk (sien hieronder).

Ek is onlangs die taak gegee om 'n nuwe veld te skep waarin dit moontlik moet wees om 'n enkele finansiële dimensie te spesifiseer, in hierdie geval Produk. Natuurlik moet die nuwe veld ook die geldige waardes van hierdie dimensie kan opsoek.

Dit is 'n bietjie meer ingewikkeld as 'n gewone opsoek in 'n tabel, maar as jy weet hoe, is dit eintlik nie te erg nie.

Gelukkig bied die standaardtoepassing 'n gerieflike opsoekvorm (DimensionLookup) wat vir die doel gebruik kan word, as jy net sê watter dimensie-attribuut om op te soek.

Eerstens moet jy die vormveld self skep. Dit kan gebaseer wees op 'n tabelveld of 'n wysigingsmetode, dit maak nie saak vir die opsoek self nie, maar op die een of ander manier moet dit die uitgebreide datatipe DimensionValue gebruik.

Jy moet dan 'n OnLookup-gebeurtenisverwerker vir die veld skep. Om 'n gebeurtenisverwerker te skep, regs-kliek op die OnLookup-gebeurtenis vir die veld en kies dan "Kopieer gebeurtenisverwerkermetode". Jy kan dan 'n leë gebeurtenisverwerkermetode in 'n klas plak en dit van daar af wysig.

Let wel: Meeste hiervan sal ook vir Dynamics AX 2012 werk, maar in plaas daarvan om 'n gebeurtenisverwerker te skep, kan jy die vormveld se opsoekmetode oorskryf.

Die gebeurtenisverwerker moet so iets lyk (vervang vormnaam en veldnaam soos nodig):

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

Verdere Leeswerk

As jy hierdie plasing geniet het, sal jy dalk ook van hierdie voorstelle hou:


Deel op BlueskyDeel op FacebookDeel op LinkedInDeel op TumblrDeel op XDeel op LinkedInSpeld op Pinterest

Mikkel Christensen

Oor die skrywer

Mikkel Christensen
Mikkel is die skepper en eienaar van miklix.com. Hy het meer as 20 jaar ondervinding as 'n professionele rekenaarprogrammeerder/sagteware-ontwikkelaar en is tans voltyds in diens van 'n groot Europese IT-korporasie. Wanneer hy nie blog nie, spandeer hy sy vrye tyd aan 'n groot verskeidenheid belangstellings, stokperdjies en aktiwiteite, wat tot 'n mate weerspieël kan word in die verskeidenheid onderwerpe wat op hierdie webwerf gedek word.