Skep 'n opsoekveld vir 'n finansiële dimensie in Dynamics 365
Gepubliseer: 16 Februarie 2025 om 11:36:17 UTC
Hierdie artikel verduidelik hoe om 'n opsoekveld vir 'n finansiële dimensie in Dynamics 365 for Operations te skep, insluitend 'n X++-kodevoorbeeld.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Die inligting in hierdie pos is gebaseer op Dynamics 365 for Operations, maar die meeste daarvan sal ook vir Dynamics AX 2012 werk (sien hieronder).
Ek is onlangs opdrag gegee om 'n nuwe veld te skep waarin dit moontlik moet wees om 'n enkele finansiële dimensie, in hierdie geval Produk, te spesifiseer. Natuurlik moet die nuwe veld ook die geldige waardes van hierdie dimensie kan opsoek.
Dit is 'n bietjie meer ingewikkeld as 'n gereelde opsoek in 'n tabel, maar as jy weet hoe, is dit eintlik nie te sleg nie.
Gelukkig bied die standaardtoepassing 'n gerieflike opsoekvorm (DimensionLookup) wat vir die doel gebruik kan word, as jy dit net vertel watter dimensie-kenmerk om op te soek.
Eerstens moet u die vormveld self skep. Dit kan gebaseer wees op 'n tabelveld of 'n wysigingsmetode, maak nie saak vir die opsoek self nie, maar op een of ander manier moet dit die DimensionValue uitgebreide datatipe gebruik.
Jy moet dan 'n OnLookup-gebeurtenishanteerder vir die veld skep. Om 'n gebeurtenis hanteerder te skep, klik met die rechtermuisknop op die OnLookup gebeurtenis vir die veld, kies dan "Kopieer gebeurtenis hanteerder metode". Jy kan dan 'n leë gebeurtenis hanteerder metode in 'n klas plak en dit van daar af wysig.
Kennisgewing: Die meeste hiervan sal ook vir Dynamics AX 2012 werk, maar in plaas daarvan om 'n gebeurtenishanteerder te skep, kan jy die vormveld se opsoekmetode ignoreer.
Die gebeurtenishanteerder 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);
}