Inicio Blog Visualización de atributos de un objeto relacionado

Visualización de los atributos de un objeto relacionado

Brian Stevens | 30 de septiembre de 2021

Visualización de los atributos de un objeto relacionado

Una de las grandes características de la plataforma Acumatica XRP es que elimina la necesidad de mucha codificación personalizada a través de los atributos. Por ejemplo, la pantalla Stock Items proporciona atributos según la clase de artículo del artículo; la pantalla Vendor proporciona atributos basados en la clase de proveedor; y la lista sigue y sigue. Lo que hace que esta característica sea tan increíble es que el administrador del sistema puede configurar una lista de atributos que se mantendrán según la clasificación del artículo, proveedor, etc. Aunque estos atributos podrían ser valores que aún no tienen un marcador de posición en el sistema, también pueden variar de una clase a otra.

La plataforma Acumatica XRP contiene muchos ejemplos de pantallas y códigos que pueden copiarse para agregar atributos a pantallas personalizadas. Sin embargo, ¿qué ocurre si el objetivo es mostrar los atributos de OTRA pantalla... de un objeto relacionado? No se preocupe. El proceso es bastante fácil para un desarrollador y se puede dividir en 3 sencillos pasos como ilustro a continuación.

Para preparar el escenario, se ha recibido un requerimiento de negocio para mostrar varias pestañas de datos relacionados con un artículo desde la pantalla de Artículos de Inventario, por lo que la pestaña de atributos en la pantalla personalizada buscará atributos en InventoryItem. Dado que se pretende que esto se defina para visibilidad más que para mantenimiento, asegúrese de bloquear el acceso para mantener la pestaña de atributos mediante permisos o código. (Descargo de responsabilidad: Este código 2021 R1 no ha sido probado para mantener los atributos relacionados).

Paso 1 - Crear una versión personalizada de CRAttributeList

GIST: https://gist.github.com/BrianMRO/6e442e41e0dcaa748f6efceb8c67aeed

Este código puede parecer complicado para los nuevos desarrolladores, pero en realidad no lo es. La mayor parte del código importante está en redefinir SelectDelegate para que recuperemos el objeto relacionado y obtengamos sus atributos. La mayor parte de esta sección se debe a que debemos copiar el constructor y todos los métodos y variables internos y privados de CRAttributeList para hacerlos accesibles, ya que su nivel de protección los hace inaccesibles a través de la herencia. Recuerda, técnicamente la herencia permite heredarlos, pero eso no significa que sean accesibles para ti en tu nueva clase.

Si nos fijamos en SelectDelegate, el registro MyDAC actual se recupera de la caché y, a continuación, se recupera el registro InventoryItem relacionado al que se hace referencia en MyDAC. Pasando el objeto InventoryItem (item) a SelectInternal permitirá que el resto del atributo funcione normalmente pero basado en el InventoryItem relacionado en lugar del registro MyDAC de la pantalla personalizada.

Paso 2 - Definir la vista Respuestas para la pestaña Atributos

GIST: https://gist.github.com/BrianMRO/4e78a158f7dce459395c6b5710d95a06

Esto refleja el uso de CRAttributeList por razones obvias. El atributo personalizado se basa en CRAttributeList, y el nombre básicamente es lo único que cambia aquí de cualquier otra pantalla.

Paso 3 - Añadir la pestaña Atributos

GIST: https://gist.github.com/BrianMRO/ae4e7bb280477faa80a54c7b3bce6e46

Este código .aspx puede copiarse de casi cualquier pantalla que contenga una pestaña de atributos. Simplemente busca la vista Respuestas pararellenar la cuadrícula estándar.

Después de compilar, actualizar el proyecto de personalización con la nueva DLL y publicar el proyecto, la nueva pestaña Atributos debería mostrar los atributos del objeto relacionado desde dentro de la pantalla personalizada.

¡Feliz codificación!

Autor del blog

Brian es el desarrollador principal de SETECH Supply Chain Solutions, LLC. SETECH ofrece soluciones a medida basadas en las mejores prácticas para mejorar la disponibilidad de materiales indirectos y reducir al mismo tiempo el coste total de propiedad para sus clientes.

Reciba las actualizaciones del blog en su bandeja de entrada.