¿Cómo insertar un registro con un SystemId específico en AL?
En el blog de hoy vamos a explicar brevemente cómo insertar un registro con un SystemId especificado en AL.
Como sabeís, podemos insertar datos directamente a través de AL, lo cual es muy común durante la personalización. Se utiliza el método Record.Insert().
¿Qué es el método Record.Insert() en AL?
Método Record.Insert(): El método Insert inserta un registro en una tabla.
Veamos un ejemplo muy sencillo:
Customer.»No.» := ‘CBR’;
Customer.Insert();


Y la plataforma asignará automáticamente un SystemId al registro insertado. (No tiene nada que ver con si el desencadenador OnInsert)
¿Qué es el campo SystemId en Dynamics 365 Business Central?
Características del campo SystemId en AL
Campo SystemId (SE APLICA A: Business Central 2019 Release Wave 2 y versiones posteriores)
El campo SystemId es un campo de tipo de datos GUID que especifica un identificador único e inmutable (solo lectura) para los registros de la tabla. El campo SystemId tiene las siguientes características y comportamiento:
-
Todos los registros deben tener un valor en el campo SystemId.
-
Puede asignar su propio valor cuando se inserta un registro en la base de datos. De lo contrario, la plataforma generará y asignará automáticamente un valor.
-
Una vez que se ha establecido el SystemId, no se puede cambiar.
-
Siempre hay una clave secundaria única en el campo SystemId para garantizar que los registros no tengan valores de campo idénticos.
-
Al campo SystemId se le asigna el número de campo 2000000000.
El campo SystemId se puede usar también como clave de enlace a una API.
¿Cómo insertar un registro con SystemId usando Insert(Boolean, Boolean)?
Entonces, ¿podemos insertar un registro con un SystemId especificado en AL? Sí, no es difícil, para asignar un SystemId específico en lugar del asignado por la plataforma, use Insert(Boolean, Boolean) en su lugar.
Parámetro RunTrigger: controlar ejecución de OnInsert
RunTrigger
Tipo: Boolean
Si este parámetro es verdadero, se ejecuta el código del desencadenador OnInsert. Si este parámetro es false, no se ejecuta el código del desencadenador OnInsert. El valor predeterminado es false.
Parámetro InsertWithSystemId: asignar SystemId manualmente
InsertWithSystemId
Tipo: booleano
Si este parámetro es verdadero, al campo SystemId del registro se le asigna un valor que se asigna explícitamente. Si no se asigna un valor, la plataforma asigna uno. Si este parámetro es false, al campo SystemId se le asigna un valor generado automáticamente por la plataforma. El valor predeterminado es false.
Consideración clave al usar SystemId en AL
Importante: una vez establecido el SystemId en un registro, no se puede cambiar.
Sobre ABD Consultoría y Soluciones Informáticas
En ABD Consultoría y Soluciones Informáticas llevamos más de 30 años ayudando a empresas a transformar su gestión mediante soluciones tecnológicas avanzadas. Como partner oficial de Microsoft, estamos especializados en la implantación, personalización y soporte de Dynamics 365 Business Central.
Nuestro equipo técnico domina el desarrollo en AL y la optimización de entornos Business Central, ayudando a nuestros clientes a adaptar el ERP a sus necesidades reales, ya sea con personalizaciones, integraciones o automatización de procesos.
¿Quieres ir un paso más allá con Business Central? Escríbenos y te acompañamos desde la estrategia hasta el código