Miklix

Creación de un campo de búsqueda para una dimensión financiera en Dynamics 365

Publicado: 16 de febrero de 2025, 11:33:32 UTC

Este artículo explica cómo crear un campo de búsqueda para una dimensión financiera en Dynamics 365 for Operations, incluido un ejemplo de código X++.


Esta página ha sido traducida automáticamente del inglés para hacerla accesible al mayor número de personas posible. Lamentablemente, la traducción automática no es todavía una tecnología perfeccionada, por lo que pueden producirse errores. Si lo prefiere, puede consultar la versión original en inglés aquí:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

La información de esta publicación se basa en Dynamics 365 for Operations, pero la mayor parte también funcionará para Dynamics AX 2012 (ver a continuación).

Recientemente me encargaron la tarea de crear un nuevo campo en el que debería ser posible especificar una única dimensión financiera, en este caso, Producto. Por supuesto, el nuevo campo también debería poder buscar los valores válidos de esta dimensión.

Esto es un poco más complicado que una búsqueda normal en una tabla, pero si sabes cómo hacerlo, en realidad no es tan complicado.

Afortunadamente, la aplicación estándar proporciona un formulario de búsqueda conveniente (DimensionLookup) que puede usarse para este propósito, si simplemente le indica qué atributo de dimensión buscar.

En primer lugar, debe crear el campo de formulario en sí. Puede basarse en un campo de tabla o en un método de edición; no importa para la búsqueda en sí, pero de una forma u otra debe utilizar el tipo de datos extendido DimensionValue.

A continuación, debe crear un controlador de eventos OnLookup para el campo. Para crear un controlador de eventos, haga clic con el botón derecho en el evento OnLookup para el campo y, a continuación, seleccione "Copiar método de controlador de eventos". A continuación, puede pegar un método de controlador de eventos vacío en una clase y editarlo desde allí.

Aviso: la mayor parte de esto también funcionará para Dynamics AX 2012, pero en lugar de crear un controlador de eventos, puede anular el método de búsqueda del campo de formulario.

El controlador de eventos debe verse así (reemplace el nombre del formulario y el nombre del campo según sea necesario):

[
    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);
}
Compartir en BlueskyCompartir en FacebookCompartir en LinkedInCompartir en TumblrCompartir en XCompartir en LinkedInPin en Pinterest

Mikkel Bang Christensen

Sobre el autor

Mikkel Bang Christensen
Mikkel es el creador y propietario de miklix.com. Tiene más de 20 años de experiencia como programador informático profesional y desarrollador de software, y actualmente trabaja a tiempo completo para una gran empresa europea de TI. Cuando no está escribiendo en su blog, dedica su tiempo libre a una gran variedad de intereses, aficiones y actividades, que en cierta medida pueden verse reflejados en la variedad de temas tratados en este sitio web.