¡Saludos, comunidad de NaviWorld!
Una vez más, nos encontramos explorando las fascinantes tierras de programación en Business Central de Microsoft. En esta ocasión, deseo compartir contigo algunas joyas de código que te facilitarán el trabajo con variables de tipo Time.
¡Así que prepárate para mejorar tus habilidades y optimizar tu experiencia de desarrollo!
¡Vamos manos a la obra! 😉
Mejorando la Formatación del Tiempo
Comencemos por darle un toque de elegancia a nuestra función de formateo de tiempo. En lugar de simplemente ajustar las horas, minutos y segundos, exploremos opciones más robustas y legibles. Podemos utilizar el formato de hora estándar y mejorar la presentación visual. Aquí te dejo la versión mejorada:
local procedure FormatTime(ValueTime: Time) ReturnValueTime: Time
var
ValueText: Text;
begin
ValueText := Format(ValueTime, 0, '<Hours24>.<Minutes,2>.<Seconds,2>');
Evaluate(ReturnValueTime, ValueText);
end;
Con esta pequeña modificación, nuestras horas, minutos y segundos ahora se presentan en un formato más familiar y fácil de interpretar.
Sumando Tiempos como un Maestro
En la función de suma, podemos profundizar en la explicación para que tengas una comprensión más clara. Además, vamos a manejar situaciones en las que recibimos valores vacíos. Echemos un vistazo a la versión mejorada:
procedure SumTimes(ValueTime01: Time; ValueTime02: Time) ReturnValue: Time
var
ValueTime03: Time;
ValueDuration01: Duration;
ValueDuration02: Duration;
ValueDuration03: Duration;
begin
ValueTime03 := 000000T;
if (Format(ValueTime01) = '') or (Format(ValueTime02) = '') then
exit(ValueTime03);
ValueDuration01 := ValueTime01 - ValueTime03;
ValueDuration02 := ValueTime02 - ValueTime03;
ValueDuration03 := ValueDuration01 + ValueDuration02;
ReturnValue := ValueTime03 + ValueDuration03;
ReturnValue := FormatTime(ReturnValue);
end;
Ahora, al explicar el código, hemos destacado la inicialización a medianoche y manejado la posibilidad de valores vacíos, lo que hace que nuestra función sea más robusta y comprensible.
Restando Tiempos con Estilo
Siguiendo la línea de simplificación, nuestra función de resta se ha vuelto más concisa y fácil de seguir:
procedure SubstractTimes(ValueTime01: Time; ValueTime02: Time) ReturnValue: Time
var
ValueTime03: Time;
ValueDuration: Duration;
begin
ValueTime03 := 000000T;
if (Format(ValueTime01) = '') or (Format(ValueTime02) = '') then
exit(ValueTime03);
ValueDuration := ValueTime01 - ValueTime02;
ReturnValue := ValueTime03 + ValueDuration;
ReturnValue := FormatTime(ReturnValue);
end;
Simplicidad y claridad son las claves aquí. Hemos mantenido la funcionalidad, pero hemos reducido la complejidad para una mejor comprensión.
Explorando Conversiones
Las funciones de conversión merecen un mayor enfoque. Veamos cómo podemos enriquecer la explicación de la conversión de Decimal a Tiempo:
procedure ConvertDecimalToTime(ValueDecimal: Decimal) ReturnValue: Time
var
ValueDuration: Duration;
ValueTime: Time;
begin
ValueDecimal := Round(ValueDecimal, 0.00001);
ValueDuration := ValueDecimal * 3600000;
ValueTime := 000000T;
ReturnValue := ValueTime + ValueDuration;
ReturnValue := FormatTime(ReturnValue);
end;
Aquí, hemos expandido la explicación sobre cómo se realiza la conversión y destacamos la relación con milisegundos, lo que facilita la comprensión del proceso.
Descifrando el Tiempo Decimal
Finalmente, echemos un vistazo a la función de conversión de Tiempo a Decimal:
procedure ConvertTimeToDecimal(ValueTime: Time) ReturnValue: Decimal
begin
if format(ValueTime) = '' then
exit(0);
ReturnValue := ValueTime - 000000T;
ReturnValue := ReturnValue / 3600000;
end;
En esta sección, hemos reforzado la importancia de manejar valores vacíos y proporcionamos una explicación más detallada sobre la conversión de Tiempo a Decimal.
Como siempre este ejemplo entero lo tenéis colgado en GitHub.
¡Y ahí lo tienes! Con estas mejoras, espero que te sumerjas aún más en el fascinante mundo de la programación en Business Central. Recuerda que el código es tu aliado, y entender cada línea te hará un maestro en estas tierras digitales. ¡Hasta la próxima, programadores intrépidos!