Introducción
En el mundo de la programación, a menudo necesitamos realizar operaciones con valores de tiempo. Una de las operaciones comunes es la resta de dos tiempos para obtener la diferencia entre ellos. En este post, te mostraré cómo crear una Codeunit en Navision que resta dos valores de tiempo y convierte el resultado a un formato legible.
Vamos manos a la obra 😍
Explicación del Código
El código que vamos a analizar es una Codeunit en Navision llamada RestarDosTime
. A continuación, se muestra el código completo y una explicación detallada de cada parte.
OBJECT Codeunit 62000 RestarDosTime
{
OBJECT-PROPERTIES
{
Date=26/01/22;
Time=[ 8:16:18];
Modified=Yes;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
Restar();
END;
}
CODE
{
LOCAL PROCEDURE Restar@1000000001();
VAR
t1@1000000000 : Time;
t2@1000000001 : Time;
t3@1000000002 : Time;
i@1000000003 : Decimal;
BEGIN
t1 := 115000T;
t2 := 125100T;
i := t2 - t1;
t3 := 000000T;
// lo convierto a segundos
i := i / 1000;
t3 := t3 + (i MOD 60) * 1000;
// lo convierto a minutos
i := i DIV 60;
t3 := t3 + (i MOD 60) * 1000 * 60;
// lo convierto a horas
i := i DIV 60;
t3 := t3 + (i MOD 60) * 1000 * 60 * 60;
MESSAGE(FORMAT(t3));
END;
}
}
Detalle del Código
- Definición del objeto: La Codeunit
RestarDosTime
se define con el número 62000 y tiene algunas propiedades básicas como la fecha y hora de modificación. - Evento OnRun: Dentro del evento
OnRun
, se llama al procedimiento localRestar
. - Procedimiento Local
Restar
:
- Se declaran tres variables de tiempo
t1
,t2
yt3
, y una variable decimali
. t1
yt2
se inicializan con los tiempos11:50:00
y12:51:00
respectivamente.- Se calcula la diferencia entre
t2
yt1
y se almacena eni
. t3
se inicializa en00:00:00
.- La diferencia en milisegundos se convierte a segundos, minutos y horas utilizando operaciones de división y módulo.
- Finalmente, se muestra el resultado formateado en un mensaje.
Conclusión
Este código es un ejemplo sencillo pero efectivo de cómo manejar operaciones con tiempos en Navision. La lógica utilizada para convertir la diferencia de tiempo a un formato legible es fundamental para aplicaciones que requieren cálculos precisos de tiempo. Además, es un gran punto de partida para personalizar y ampliar según las necesidades específicas de tu proyecto.
Como siempre el código esta en mi GitHub
Espero que este post sea útil. Si necesitas más ayuda o deseas hacer algún comentario, ¡házmelo saber!