Miklix

Vytvoření vyhledávacího pole pro finanční dimenzi v Dynamics 365

Vydáno: 16. února 2025 v 11:32:41 UTC

Tento článek vysvětluje, jak vytvořit vyhledávací pole pro finanční dimenzi v Dynamics 365 for Operations, včetně příkladu kódu X++.


Tato stránka byla strojově přeložena z angličtiny, aby byla přístupná co největšímu počtu lidí. Strojový překlad bohužel ještě není dokonalá technologie, takže může dojít k chybám. Pokud si přejete, můžete si prohlédnout původní anglickou verzi zde:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

Informace v tomto příspěvku jsou založeny na Dynamics 365 for Operations, ale většina z nich bude fungovat také pro Dynamics AX 2012 (viz níže).

Nedávno jsem dostal za úkol vytvořit nové pole, ve kterém by mělo být možné specifikovat jednu finanční dimenzi, v tomto případě Produkt. Nové pole by samozřejmě mělo být také schopno vyhledat platné hodnoty této dimenze.

Je to o něco složitější než běžné vyhledávání v tabulce, ale pokud víte jak, není to vlastně tak špatné.

Naštěstí standardní aplikace poskytuje pohodlný vyhledávací formulář (DimensionLookup), který lze pro tento účel použít, pokud jí pouze řeknete, který atribut dimenze má vyhledat.

Nejprve musíte vytvořit samotné pole formuláře. To může být založeno na poli tabulky nebo na metodě úprav, nezáleží na samotném vyhledávání, ale tak či onak musí používat rozšířený datový typ DimensionValue.

Poté musíte pro pole vytvořit obslužnou rutinu události OnLookup. Chcete-li vytvořit obslužnou rutinu události, klepněte pravým tlačítkem myši na událost OnLookup pro pole a poté vyberte "Kopírovat metodu obsluhy události". Potom můžete vložit prázdnou metodu obsluhy události do třídy a odtud ji upravit.

Poznámka: Většina z toho bude fungovat i pro Dynamics AX 2012, ale místo vytvoření obslužné rutiny události můžete přepsat metodu vyhledávání pole formuláře.

Obslužná rutina události musí vypadat nějak takto (podle potřeby nahraďte název formuláře a název pole):

[
    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);
}
Sdílet na BlueskySdílejte na FacebookuSdílet na LinkedInSdílet na TumblrSdílet na XSdílet na LinkedInPřipnout na Pinterest

Mikkel Bang Christensen

O autorovi

Mikkel Bang Christensen
Mikkel je tvůrcem a majitelem webu miklix.com. Má více než 20 let zkušeností jako profesionální programátor/vývojář softwaru a v současné době pracuje na plný úvazek pro velkou evropskou IT společnost. Pokud zrovna nepíše blog, věnuje svůj volný čas široké škále zájmů, koníčků a aktivit, což se může do jisté míry odrážet v rozmanitosti témat na tomto webu.