Agregar método de visualización o edición mediante extensión en Dynamics 365
Publicado: 16 de febrero de 2025, 11:55:28 UTC
En este artículo, explico cómo usar una extensión de clase para agregar un método de visualización a una tabla y un formulario en Dynamics 365 for Operations, se incluyen ejemplos de código X++.
Add Display or Edit Method via Extension in Dynamics 365
Si bien planificar el uso de métodos de visualización o edición en Dynamics es algo que generalmente debería hacerle considerar si quizás podría diseñar su solución de una manera diferente, en ocasiones son la mejor opción.
En versiones anteriores de Dynamics y Axapta, era muy fácil crear métodos de visualización o edición en tablas y formularios, pero cuando recientemente tuve que crear mi primer método de edición en Dynamics 365, descubrí que el procedimiento para hacerlo es algo diferente.
Evidentemente, existen varios enfoques válidos, pero el que me parece mejor (tanto en términos de intuición como de belleza del código) es utilizar una extensión de clase. Sí, puedes utilizar extensiones de clase para añadir métodos a otros tipos de elementos que no sean clases (en este caso, una tabla), pero también funciona para formularios.
Primero, crea una nueva clase. Puedes ponerle el nombre que quieras, pero por alguna razón debe tener el sufijo "_Extension". Supongamos que necesitas agregar un método de visualización a CustTable; por ejemplo, puedes ponerle el nombre MyCustTable_Extension.
La clase debe estar decorada con ExtensionOf para que el sistema sepa qué estás extendiendo, de la siguiente manera:
public final class MyCustTable_Extension
{
}
Ahora puede implementar su método de visualización en esta clase, como lo hubiera hecho directamente en la tabla en versiones anteriores de Dynamics: "esto" incluso hace referencia a la tabla, por lo que puede acceder a los campos y otros métodos.
Por ejemplo, una clase con un método de visualización simple (y completamente inútil) que solo devuelve el número de cuenta del cliente podría verse así:
public final class MyCustTable_Extension
{
public display CustAccount displayAccountNum()
{
;
return this.AccountNum;
}
}
Ahora, para agregar el método de visualización a un formulario (o extensión de formulario, si no puede editar el formulario directamente), debe agregar un campo al formulario manualmente y asegurarse de usar el tipo correcto (cadena en este ejemplo).
Luego, en el control, establecería DataSource en CustTable (o cualquiera que sea el nombre de su fuente de datos CustTable) y DataMethod en MyCustTable_Extension.displayAccountNum (asegúrese de incluir el nombre de la clase; de lo contrario, el compilador no podrá encontrar el método).
Y ya está :-)
Actualización: ya no es necesario incluir el nombre de la clase de extensión al agregar el método de visualización a un formulario, pero en el momento original de la publicación, sí lo era. Dejo la información aquí en caso de que algunos lectores sigan usando versiones anteriores.