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:
- Obtener el registro: A partir del
Variant
, se carga el contenido real conRecordRef.GetTable
. - 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”. - Insertar y escribir la nota: Se inserta el
Record Link
y luego se llama aWriteNote
del codeunitRecord Link Management
para guardar el texto de la nota. - 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!