BC Way - Add Attachments Links and notes on Custom Tables

 


Bienvenido a BC Scout Path, vamos a ver algo muy básico pero muy util, implementar adjuntar documentos, links y notas 🗃️ en tablas personalizadas de manera limpia.

Como vais a ver en el caso de Links y notas no tiene realmente mucho misterio (y con lo Pro que eres tú te lo ventilaras en un copy/paste😉), sin embargo adjuntar documentos puede tener algo de complejidad si no lo hemos visto antes 🫠.

Recuerda que tienes todo el código que voy mencionando en el siguiente repositorio:


1- Contexto funcional:

Seguimos extendiendo la extensión de cuentas estadísticas, esta vez los requisitos de nuestra funcionalidad son los siguientes:

  • La tabla “Statistical Account” debe permitir adjuntar archivos, links y notas contra sus registros de la manera más estándar posible (nada de chapuzas por favor👾).
  • Queremos tener la posibilidad de mostrar/ocultar esta funcionalidad a traves de una configuración👀.
  • Debemos eliminar los documentos adjuntos relacionados si la cuenta estadística es eliminada ❌ y mantener la relación si renombramos la cuenta🖇️ (esto normalmente no te lo dicen pero lo enfatizo porque sino dejamos registros huérfanos).

2- Contexto técnico:

Estamos extendiendo la extensión de Microsoft “Statistical Accounts”, para ello hemos declarado en el archivo app.json nuestra dependencia.

Si quieres saber como puedes verlo en el articulo anterior:


3- Desarrollo:
Vamos a hacer lo siguiente:

  • Modificar nuestra tabla y página de configuración de cuentas estadísticas y añadir checks para mostrar o ocultar los factbox de attachments, links y notes.
  • Vamos a incorporar los factbox estándar tanto a la lista de cuentas estadísticas como a su tarjeta (controlando su visibilidad).
  • Vamos a crear una Codeunit para encapsular la mayor parte del código para gestionar adjuntos en nuestra extensión.
  • Vamos a incorporar más lógica en los eventos de eliminación y renombre de registros de la tabla de cuentas estadísticas.
Empezamos!

Modificamos la tabla de configuración para definir los tres checks que controlaran la visibilidad de los factbox (“Enable attachments”,“Enable links”, “Enable notes”).


Mostramos los nuevos campos en la página de configuración.


Creamos nuestra Codeunit (BCSAttachmentManagement.Codeunit.al) para la gestión de adjuntos de esta entidad en nuestra extensión (aquí es donde vamos a ir explicando).


Las tres primeras funciones suscriptoras (OnBeforeDrillDown, OnAfterOpenForRecRef y OnAfterInitFieldsFromRecRef) extienden la funcionalidad estándar de adjuntos para permitir que funcione correctamente con cuentas estadísticas cuando incorporemos los factbox.

Las siguientes tres funciones (EntityEnabledAttachments, EntityEnabledLinks y EntityEnabledNotes) van a definirnos si debe de ser visible los factbox en base a los checks de configuración (seguimos un patron bastante usado por Microsoft en el que en base al numero de tabla gestionamos cada caso de manera diferente).

Por ultimo las funciones DeleteRelatedDocumentAttachments y CopyRelatedDocumentAttachments controlaran las eliminaciones y renombrados de registros para evitar registros huérfanos (las llamaremos en los eventos de la Table Extension “Statistic Accounts”).

Nota importante: debemos de extender el enum “Attachment Document Type” para incluir nuestra nueva categoría “BCSStatisticalAccount” que definirá nuestros documentos en el evento OnAfterInitFieldsFromRecRef.


Ajustamos en el Table Extension de “Statistical Account” los controles de adjuntos (DeleteRelatedDocumentAttachments y CopyRelatedDocumentAttachments) en los eventos OnBeforeRename y OnBeforeDelete.


Y por ultimo incorporamos en las page extensions de lista y tarjeta de cuentas estadísticas los factbox. Cosas a tener en cuenta:
  • Definimos la visibilidad de los factbox (propiedad “Visible”) en el evento OnOpenPage usando tres variables cuyos valores obtenemos de las funciones que definimos en la Codeunit (y que se basan en la configuración).
  • Definimos correctamente la relación del registro con los adjuntos a traves de la propiedad SubPageLink (el TableId y Document Type son estáticos mientras que el No es en base al registro que el usuario tenga seleccionado).


4- Funcionalidad:

Ahora podemos definir en la configuración de cuentas estadísticas los factbox que haremos visibles.


Y como podemos ver, en el panel lateral de factbox ya disponemos de los apartados estándar para adjuntar documentos, links y notas a nuestro registro (tanto en la lista como en la tarjeta).



5- Conclusión:

Esta funcionalidad puede parecer una tontada aunque muchos usuarios agradecen mucho tenerla🤩…⚠️🫷💣Pero 🚧recuerda que la capacidad de almacenamiento de BC tiene limites🚧… y a veces es mejor simplemente crear un Sharepoint 🗄️💡 (de manera ordenada, nada de cajon desastre😢) donde los usuarios adjunten los documentos y el link/s al archivo de Sharepoint lo incluimos en el factbox de links de su registro (hay mas alternativas usando Power Automate, pero esta es una simple 😉).

Espero que este articulo te haya servido para pilotar un poco mejor este tema y que además puedas dar argumentos a tus clientes de porque seguramente no quieren adjuntos dentro de BC🤐 y como cubrir esa necesidad de otras maneras 😏.

Remember: Talk is cheap, show me the code!








Post a Comment

Previous Post Next Post