Optimizar procesos evitando lecturas a disco

Navegando por mibuso.com he encontrado un artículo de Alain Krikilion que me ha parecido muy interesante. Se trata del uso de una serie de funciones propias para el acceso que muchas veces hacen los procesos recurrentes a datos maestros. La idea principal de estas funciones es controlar el número de accesos a disco volcando la información ya consultada sobre instancias temporales de variables tipo rec. De esta forma, se consigue que la siguiente consulta al mismo registro se haga contra memoria en vez de hacerlo contra disco. El resultado es en la mayoría de los casos espectacular… tengo ganas de ponerlo en práctica en alguno de mis pesados procesos… En el artículo, describe el caso concreto de un proceso testeado con entornos de Navision nativo y Navision SQL. Los resultados muestran como procesos que utilizaban unos tiempos de 12 minutos pasan 10 en SQL y 8 minutos a 4 nativo. Pensemos ahora que pasaría con procesos que consumen varias horas teniendo en cuenta que la mayoría de ellos contienen un GET reiterativo contra algúna tabla maestra. El link en cuestión lo tenéis aquí: http://www.mibuso.com/howtoinfo.asp?FileID=14

Leyendas de bitmaps en Navision

El control image tiene una propiedad llamada bitmap donde acostumbramos a poner la ruta de una imagen de mapa de bits. Existe también la opción de escribir un número entre el 0 y el 44. Cada número corresponde con una imagen diferente. El siguiente report, muestra todas estas imagenes a modo de leyenda para consultarla cuando nos sea necesario.

Resulta muy útil imprimirlo y utilizarlo como guía para tener a mano. Lo utilizaremos en muy pocas ocasiones pero ganaremos mucho tiempo si lo tenemos cerca. Podéis hacer click con el botón derecho y guardarlo para cuando os haga falta.

Numeración de colores en Navision

Como ya sabemos existen varias propiedades en algunos controles de Navision que nos permiten añadir colores. Estas propiedades se informan con un valor numérico no fácil de entender. En este post he diseñado un formulario con algunos colores básicos, así como una sencilla función RGB que permite obtener el valor decimal de cualquier RGB. Como vemos, la función es muy sencilla y resulta muy útil cuando queremos utilizar colores que tenemos identificados en otras aplicaciones. Tan sólo necesitamos declarar una función con los tres parámetros de tipo Integer y devolver el resultado también en formato Integer:

En la siguiente imagen podemos ver un ejemplo con varias llamadas a la función con distintos valores…

…y el resultado de la ejecución: