Miklix

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

Vydáno: 16. února 2025 v 11:32:41 UTC
Poslední aktualizace: 12. ledna 2026 v 8:56:04 UTC

Tento článek vysvětluje, jak vytvořit vyhledávací pole pro finanční dimenzi v aplikaci 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 aplikaci Dynamics 365 for Operations, ale většina z nich bude fungovat i 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é zadat jednu finanční dimenzi, v tomto případě Produkt. Nové pole by samozřejmě mělo také umožnit vyhledávat platné hodnoty této dimenze.

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

Naštěstí standardní aplikace nabízí praktický vyhledávací formulář (DimensionLookup), který lze k tomuto účelu použít, stačí sdělit, který atribut dimenze má vyhledat.

Nejprve je třeba vytvořit samotné pole formuláře. Může být založeno na poli tabulky nebo metodě úprav, pro samotné vyhledávání to nevadí, ale v jistém smyslu musí používat rozšířený datový typ DimensionValue.

Pak je potřeba pro dané pole vytvořit obslužnou rutinu události OnLookup. Chcete-li vytvořit obslužnou rutinu události, klikněte pravým tlačítkem myši na událost OnLookup pro dané pole a poté vyberte možnost „Kopírovat metodu obslužné rutiny události“. Prázdnou metodu obslužné rutiny události pak můžete vložit do třídy a odtud ji upravovat.

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

Obslužná rutina události musí vypadat nějak takto (v případě 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);
}

Další čtení

Pokud se vám tento příspěvek líbil, mohly by se vám líbit i tyto návrhy:


Sdílet na BlueskySdílejte na FacebookuSdílet na LinkedInSdílet na TumblrSdílet na XSdílet na LinkedInPřipnout na Pinterest

Mikkel Christensen

O autorovi

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