Miklix

Creació d'un camp de cerca per a una dimensió financera al Dynamics 365

Publicat: 5 de març del 2025, a les 19:29:03 UTC

En aquest article s'explica com crear un camp de cerca per a una dimensió financera al Dynamics 365 for Operations, inclòs un exemple de codi X++.


Aquesta pàgina es va traduir automàticament de l'anglès per tal de fer-la accessible al màxim de persones possible. Malauradament, la traducció automàtica encara no és una tecnologia perfeccionada, de manera que es poden produir errors. Si ho prefereixes, pots veure la versió original en anglès aquí:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

La informació d'aquesta publicació es basa en el Dynamics 365 for Operations, però la majoria també funcionarà per al Dynamics AX 2012 (vegeu més avall).

Recentment se'm va encarregar de crear un camp nou en el qual hauria de ser possible especificar una única dimensió financera, en aquest cas Producte. Per descomptat, el nou camp també hauria de poder cercar els valors vàlids d'aquesta dimensió.

Això és una mica més complicat que una cerca normal en una taula, però si sabeu com, en realitat no està gens malament.

Afortunadament, l'aplicació estàndard ofereix un formulari de cerca convenient (DimensionLookup) que es pot utilitzar amb aquest propòsit, si només li indiqueu quin atribut de dimensió cal cercar.

Primer, heu de crear el camp del formulari. Això es pot basar en un camp de taula o en un mètode d'edició, no importa per a la recerca en si, però d'una manera o altra ha d'utilitzar el tipus de dades ampliat DimensionValue.

Aleshores, heu de crear un gestor d'esdeveniments OnLookup per al camp. Per crear un gestor d'esdeveniments, feu clic amb el botó dret a l'esdeveniment OnLookup del camp i, a continuació, trieu "Copia el mètode del gestor d'esdeveniments". A continuació, podeu enganxar un mètode de gestor d'esdeveniments buit a una classe i editar-lo des d'allà.

Avís: la major part d'això també funcionarà per al Dynamics AX 2012, però en lloc de crear un controlador d'esdeveniments, podeu substituir el mètode de cerca del camp del formulari.

El gestor d'esdeveniments ha de tenir un aspecte semblant a això (substituïu el nom del formulari i el nom del camp segons sigui necessari):

[
    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);
}
Comparteix a BlueskyComparteix a FacebookComparteix a LinkedInComparteix a TumblrComparteix a XComparteix a LinkedInPin a Pinterest

Mikkel Bang Christensen

Sobre l'autor

Mikkel Bang Christensen
Mikkel és el creador i propietari de miklix.com. Té més de 20 anys d'experiència com a programador/desenvolupador de programari informàtic professional i actualment treballa a temps complet per a una gran corporació informàtica europea. Quan no fa blocs, dedica el seu temps lliure a una gran varietat d'interessos, aficions i activitats, que fins a cert punt es poden reflectir en la varietat de temes tractats en aquest lloc web.