Buscar en este blog

viernes, 29 de enero de 2016

Crear búsquedas sobre nombre de producto cambiando métodos display en Dynamics Ax 2012

A veces es necesario hacer búsquedas por nombre de producto en los formularios de Ax, y nos topamos con que este campo en el formulario, es un método display, para esto, aquí un ejemplo de la modificación del formulario en una de las pantallas mas comunes, que es la de Disponible, que esta en Administración del inventario -> Consultas -> Disponible para realizar búsquedas por nombre.


Si nosotros solo agregamos la tabla EcoResProduct relacionada a InventTable y EcoResProductTranslation que es la tabla que contiene los nombres de productos relacionada a EcoResProduct en nuestro formulario, el campo de nombre de producto que agreguemos al formulario aparecerá vacío, esto se debe a que esta tabla necesita el idioma para la relación y para saber en qué idioma debe mostrar el nombre de producto.


Lo que se necesita hacer es:
Tener las relaciones en las tablas EcoResProduct (a InventTable) y en EcoResProductTranslation (a EcoResProduct).



Después modificar la clase que tiene el comportamiento del formulario, en este caso es InventDimCtrl_Frm_OnHand y en el método modifyQuery agregar nuestro datasource como parámetro, en este caso nuestra tabla EcoresProductTranslation que es la tabla que necesita la relación y crear una variable de tipo QueryBuildDataSource que nos va a servir para realizar el filtro para mandar el idioma a la tabla EcoResProductTranslation.


Al final de este método es donde realizamos el filtro a nuestra tabla pasandole el lenguaje de la compañia.


if(_ecoResProductTranslation)
    {
        qbsInventLookup = query.dataSourceName(_ecoResProductTranslation.name());
        qbr = SysQuery::findOrCreateRange(qbsInventLookup, fieldnum(EcoResProductTranslation, LanguageId));
        qbr.value(queryValue(CompanyInfo::languageId()));
        qbsInventLookup.addGroupByField( fieldNum(EcoResProductTranslation,Name));
    }

Modificamos la llamada a este método, que es dentro del formulario, en el datasource de InventSum, en el método executeQuery


Finalmente arrastramos el campo Name de la tabla EcoResProductTranslation a nuestro grid y abrimos el formulario. Con esto ya podemos hacer búsquedas por nombre de producto.




Post relacionados:
Reportes SQL Reporting services (SSRS) en Microsoft Dynamics Ax 2012
Multiselect de grid en Ax 2012
Crear lookup en clase dialog



Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo.


No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma. 



2 comentarios:

  1. Podrias publicar el .xpo del resultado de ese formulario o poder generar una copia con distinto nombre, no he logrado conseguir ese resultado.

    ResponderEliminar
  2. Excelente lo hice y me funciono perfecto.

    ResponderEliminar