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++.
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);
}