Utilidades en Business Central: Gestión de Notas con Record Link (Parte 11)

Añadir, leer, copiar y eliminar notas vinculadas a cualquier registro en Business Central

Esta es la undécima entrega de la serie sobre utilidades para Business Central. En esta ocasión, comparto un conjunto de funciones que permiten trabajar con el sistema de Record Links de forma sencilla y práctica. Estas funciones permiten añadir notas a registros, leerlas, copiarlas entre registros o eliminarlas por completo.

¡Vamos manos a la obra! 🧐


📝 Insertar una nota en cualquier registro

procedure InsertNewNote(RecVariant: Variant; NoteText: Text)
var
    RecordLink: Record "Record Link";
    LinkManagement: Codeunit "Record Link Management";
    RecordRef: RecordRef;
begin
    Clear(RecordRef);
    RecordRef.GetTable(RecVariant);

    RecordLink.Init();
    RecordLink."Record ID" := RecordRef.RecordId();
    RecordLink.Company := CopyStr(CompanyName(), 1, 30);
    RecordLink."User ID" := CopyStr(UserId(), 1, 132);
    RecordLink.Created := CurrentDateTime();
    RecordLink.Type := RecordLink.Type::Note;
    RecordLink.Insert();

    Clear(LinkManagement);
    LinkManagement.WriteNote(RecordLink, NoteText);
    RecordLink.Modify();
end;

¿Qué hace esta función?

La función InsertNewNote crea una nueva nota (note) vinculada a cualquier registro de Business Central. Lo hace utilizando el tipo de dato Variant, lo que le da mucha flexibilidad para aceptar cualquier tipo de tabla.

Paso a paso:

  1. Obtener el registro: A partir del Variant, se carga el contenido real con RecordRef.GetTable.
  2. Inicializar el Record Link: Se define el ID del registro, la empresa, el usuario actual, la fecha y hora, y se marca el tipo como “Nota”.
  3. Insertar y escribir la nota: Se inserta el Record Link y luego se llama a WriteNote del codeunit Record Link Management para guardar el texto de la nota.
  4. Modificar para guardar los cambios: Finalmente, se actualiza el registro.

Esta función es perfecta para registrar comentarios internos, notas rápidas o información adicional sin necesidad de crear un nuevo campo personalizado en la tabla.


📖 Leer el contenido de una nota

procedure GetNote(RecordLink: Record "Record Link"): Text;
var
    LinkManagement: Codeunit "Record Link Management";
begin
    Clear(LinkManagement);
    exit(LinkManagement.ReadNote(RecordLink));
end;

¿Qué hace esta función?

La función GetNote permite leer el contenido de una nota ya existente a partir del propio registro Record Link. Se apoya también en el codeunit Record Link Management para acceder al texto almacenado.

Es una forma directa y segura de obtener el texto sin manipular directamente los campos del sistema.


🧹 Eliminar todos los enlaces de un registro

procedure RemoveLinks(RecVariant: Variant)
var
    LinkManagement: Codeunit "Record Link Management";
begin
    Clear(LinkManagement);
    LinkManagement.RemoveLinks(RecVariant);
end;

¿Qué hace esta función?

RemoveLinks elimina todos los Record Links asociados a un registro concreto. Nuevamente, usa un Variant como entrada para que funcione con cualquier tipo de tabla.

Ideal para casos como:

  • Eliminar notas cuando se borra un registro.
  • Limpiar enlaces innecesarios en procesos de mantenimiento o migración de datos.

🔄 Copiar enlaces entre registros

procedure CopyLinks(FromRecVariant: Variant; ToRecVariant: Variant)
var
    LinkManagement: Codeunit "Record Link Management";
begin
    Clear(LinkManagement);
    LinkManagement.CopyLinks(FromRecVariant, ToRecVariant);
end;

¿Qué hace esta función?

CopyLinks permite transferir todos los enlaces (notas incluidas) de un registro a otro. Muy útil cuando se duplica información, se migran datos o se crean registros derivados de otros.

Este tipo de funcionalidad también es perfecta cuando se trabaja con flujos de trabajo que implican crear nuevos documentos a partir de plantillas o procesos similares.


🧠 Beneficios y aplicaciones prácticas

Estas funciones te pueden ser de mucha ayuda en situaciones como:

  • Añadir comentarios a cualquier registro sin necesidad de campos personalizados.
  • Reutilizar notas al copiar registros (por ejemplo, copiar una ficha de artículo o cliente).
  • Eliminar todas las notas al borrar datos o realizar limpiezas.
  • Mostrar notas en páginas personalizadas, informes o integraciones externas.

El uso del Variant permite aplicar estas funciones en múltiples tablas sin necesidad de duplicar código. Además, al basarse en estructuras estándar de Business Central (Record Link y su codeunit de gestión), garantizan compatibilidad y estabilidad.


Conclusión

En esta undécima entrega de la serie Utils, muestro cómo trabajar con notas vinculadas mediante Record Link, una funcionalidad estándar pero poco utilizada en Business Central. Gracias a estas funciones, es posible añadir, leer, copiar o eliminar notas de cualquier registro de forma rápida y estructurada.

Para seguir todos los posts de esta serie, puedes encontrarlos bajo la etiqueta #UtilsBc.

Si quieres ver el código completo, está en GitHub.

¡Nos vemos en la próxima!

Share your love

Leave a Reply

Your email address will not be published. Required fields are marked *