Miklix

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
Última actualización: 12 de enero de 2026, 8:57:17 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++.


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í:

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 manera de hacerlo.

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 considero más adecuado (tanto por su intuitividad como por la estética del código) es usar una extensión de clase. Sí, se pueden usar 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 con formularios.

Primero, crea una nueva clase. Puedes nombrarla como quieras, pero por alguna razón debe tener el sufijo "_Extension". Supongamos que necesitas añadir un método de visualización a CustTable; por ejemplo, podrías nombrarlo MyCustTable_Extension.

La clase debe estar decorada con ExtensionOf para que el sistema sepa qué estás extendiendo, de la siguiente manera:

[ExtensionOf(tableStr(CustTable))]
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í:

[ExtensionOf(tableStr(CustTable))]
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 deberá establecer 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 añadir el método de visualización a un formulario, aunque al momento de la publicación original sí lo era. Dejo la información aquí por si algunos lectores aún usan versiones anteriores.

Lectura adicional

Si te ha gustado esta publicación, puede que también te gusten estas sugerencias:


Compartir en BlueskyCompartir en FacebookCompartir en LinkedInCompartir en TumblrCompartir en XCompartir en LinkedInPin en Pinterest

Mikkel Christensen

Sobre el autor

Mikkel 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.