Microsoft Dynamics 365 FO v10.0: Un extraño comportamiento en campos de una tabla derivada.
Cuando empecé un proyecto para aprovechar las ventajas del framework de herencia de tablas, algo que no esperaba que se convirtiera en un problema mayor surgió.
Cuando realicé pruebas, la funcionalidad estándar de habilitar/deshabilitar la presentación de los campos de tablas derivadas en un formulario no funcionaba correctamente, por lo cual, éste incidente hizo que indague un poco más al detalle sobre este aspecto técnico.
Comparando con la versión AX 12, donde no me presentó este problema, me puso más en conmoción, ya que en la nueva versión de Microsoft Dynamics 365 FO, yo no tenia noción del porqué de este comportamiento.
Me tomo tiempo lidiar con este problema y la verdad, no tengo idea si se trataba de algún bug de Microsoft, pero me parece extraño que no se haya publicado alguna información actualizada con respecto a esta técnica de las tabla derivadas/heredadas para la nueva versión.
En algún momento creí que era problema de los patrones de diseños que estaba utilizando en mi formulario, así que volví a generar un nuevo formulario mucho más sencillo, revisé las relaciones de las tablas derivadas, revisé las propiedades de las tablas, cambie propiedades en los controles del grid y grupos, pero nada hacia que esto funcione correctamente.
Después de algunas pruebas para entender el problema, tenía la teoría que el problema era por la falta de refresh o el cache que mantenía la línea en el grid cuando se creaba un registro de una tabla especializada, pero con tantas modificaciones y cambios que hice a los controles del formulario sin ver un resultado positivo, las ideas se iban acabando, pero de pronto se me ocurrió que debía agregar alguna lógica dentro del método estándar active del data source principal, recuerdo haber puesto el siguiente código:
//active en Tabla Base
public void active()
{
super();
tablaDerivada_DS.AllowEdit(true); // pero no pasó nada.
}
Luego de revisar la documentación técnica del framework para la versión AX 2012 y replicar los ejemplos expuestos allí y comprobar que en D365 FO no funcionaba de la manera adecuada, probé con otra idea igual de simple, pensé, bueno veamos, esto ya lo había realizado cuando trabajé con tablas que no son derivadas y funciona para deshabilitar campos, la particularidad de esta solución es que el código fuente la ubique en un método estándar que se presenta para las tablas derivadas, dentro del data source principal sobrescribí el método CreateType y puse el siguiente código fuente:
public void createType(….)
{
super(….);
TablaDerivada_ds.Object(FieldNum(TablaDerivada, campo2)).Enabled(true);
}
Resulta que, con esto, al momento de crear un nuevo registro de la tabla derivada, el control donde se presenta el campo2 ya queda habilitado y permitía ingresar información, obviamente si escojo otro tipo de registro de las tablas derivadas donde el campo2 no está creado, el control se queda bloqueado, lo cual es correcto.
Después de algunas horas, aprendí algo nuevo e importante, y me gustaría que puedan abarcar ese conocimiento, y si en algún momento pasan por ese problema sepan qué solución pueden aplicar.

Like
Report
*This post is locked for comments