Vytvorenie vyhľadávacieho poľa pre finančnú dimenziu v Dynamics 365
Publikované: 16. februára 2025 o 11:34:04 UTC
Tento článok vysvetľuje, ako vytvoriť vyhľadávacie pole pre finančnú dimenziu v Dynamics 365 for Operations, vrátane príkladu kódu X++.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Informácie v tomto príspevku sú založené na Dynamics 365 for Operations, ale väčšina z nich bude fungovať aj pre Dynamics AX 2012 (pozri nižšie).
Nedávno som dostal za úlohu vytvoriť nové pole, v ktorom by malo byť možné špecifikovať jeden finančný rozmer, v tomto prípade Produkt. Samozrejme, nové pole by malo byť tiež schopné vyhľadať platné hodnoty tejto dimenzie.
Je to o niečo zložitejšie ako bežné vyhľadávanie v tabuľke, ale ak viete ako, v skutočnosti to nie je také zlé.
Našťastie štandardná aplikácia poskytuje pohodlný formulár na vyhľadávanie (DimensionLookup), ktorý možno na tento účel použiť, ak jej poviete, ktorý atribút dimenzie má vyhľadať.
Najprv musíte vytvoriť samotné pole formulára. To môže byť založené na poli tabuľky alebo na metóde úprav, nezáleží na samotnom vyhľadávaní, ale tak či onak musí používať rozšírený typ údajov DimensionValue.
Potom musíte pre pole vytvoriť obsluhu udalosti OnLookup. Ak chcete vytvoriť obsluhu udalosti, kliknite pravým tlačidlom myši na udalosť OnLookup pre pole a vyberte možnosť „Kopírovať metódu obsluhy udalosti“. Potom môžete vložiť prázdnu metódu obsluhy udalosti do triedy a odtiaľ ju upraviť.
Poznámka: Väčšina z toho bude fungovať aj pre Dynamics AX 2012, ale namiesto vytvorenia obsluhy udalosti môžete prepísať metódu vyhľadávania poľa formulára.
Obsluha udalosti musí vyzerať asi takto (podľa potreby nahraďte názov formulára a názov poľa):
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);
}