Miklix

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++.


Táto stránka bola strojovo preložená z angličtiny, aby bola prístupná čo najväčšiemu počtu ľudí. Žiaľ, strojový preklad ešte nie je dokonalá technológia, takže sa môžu vyskytnúť chyby. Ak chcete, môžete si pozrieť pôvodnú anglickú verziu tu:

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);
}
Zdieľať na BlueskyZdieľať na FacebookuZdieľať na LinkedInZdieľať na TumblrZdieľať na XZdieľať na LinkedInPripnúť na Pintereste

Mikkel Bang Christensen

O autorovi

Mikkel Bang Christensen
Mikkel je tvorcom a majiteľom miklix.com. Má viac ako 20 rokov skúseností ako profesionálny počítačový programátor/vývojár softvéru a v súčasnosti pracuje na plný úväzok pre veľkú európsku IT korporáciu. Keď práve nepíše blog, venuje svoj voľný čas širokej škále záujmov, koníčkov a aktivít, čo sa môže do istej miery odrážať v rôznorodosti tém na tejto webovej lokalite.