Error Stack

GETLASTERRORTEXT es una función que permite capturar el último error que se ha dado en la ejecución de un proceso. A priori, no parece algo muy útil, pero cuando pensamos en la ejecución condicional de codeunits, esta función cobra sentido.

A partir de ahí se me ocurrió una idea: ¿Y si utilizo esta función para capturar los posibles errores que pudiera tener en la ejecución de un proceso? ¿Podría diseñar una herramienta capaz de indicarle las acciones o campos que quiero validar y que me devuelva la lista de resultados que obtengo?

Para llegar a tener esta herramienta, pensé en que funciones debían de ser importantes:

  • Primero, necesitaría una función para indicarle el registro que quiero validar, el campo y el valor que quiero informar.
  • Segundo, seria necesario una función para lanzar la validación del propio campo, con los valores aportados anteriormente. El éxito o error de la validación del campo, se tendría que guardar en una pila o stack con el resultado de la ejecución.
  • Tercero A, disponer de una función para mostrar la lista de errores encontrados hasta el momento.
  • Tercero B, si no deseo mostrar la lista de errores, tener la posibilidad de recoger los resultados para tratarlos posteriormente.
  • Cuarto, disponer de una función para decidir manualmente cuando quiero limpiar la pila de errores.

Las utilidades de una herramienta como esta pueden ser varias como por ejemplo la importación masiva de datos, registro masivo de documentos, etc. Es cierto que sólo está pensado para validar campos, pero yo puedo perfectamente crear un campo booleano que al validarse, lance un pedido, por ejemplo.

Os dejo la herramienta para que la utilicéis a vuestro antojo. Espero en breve poder añadir uno o varios ejemplos de como utilizarla:

Sergisoft Error Stack v1

Primeros pasos con OData (Parte 1)

Con el lanzamiento de NAV 2013, disponemos de una nueva forma de acceder a los datos de NAV. Esta nueva vía ofrece de manera muy sencilla, segura y rápida autonomía a todo tipo de usuarios para poder extraer la información y construir sus propios listados interactivos.

En este ejemplo vamos a ver paso a paso como utilizar los servicios de OData con un plug-in de Excel que puede obtenerse totalmente gratis: PowerPivot. De forma práctica veremos cómo podemos construir una tabla dinámica segmentada por prácticamente cualquier campo que pueda afectar al Stock. Simplemente es una ejemplo didáctico, aunque las posibilidad son infinitas.

Lo primero que tenemos que identificar es el puerto con el que se ha configurado la instalación de NAV. En mi caso, es el puerto 7078, pero en una instalación estándar se utiliza el puerto 7048:

Microsoft Dynamics NAV Administration

Podemos consultar el puerto que se configuró durante la instalación consultando el nuevo Microsoft Dynamics NAV Administration.

A continuación, abrimos una nueva hoja de excel y buscamos la opción de PowerPivot:

Acceso a Power Pivot desde Excel

Para poder insertar datos en PowerPivot, estos tienen que estar publicados en NAV. Para ver y modificar los elementos que están publicados iremos a Departamentos – Administración – Administración de IT – General – Servicios web.

Para este ejemplo vamos a publicar las siguientes páginas de NAV:

Servicios Web publicados

Ahora ya está todo listo. Para indicarle a PowerPivot cómo tiene que recoger nuestros datos utilizaremos la opción de Obtener datos externos de una fuente de distribución de datos:

Obtener datos externos de una fuente de distribución de datos

En este punto, indicaremos en el segundo campo la ruta de acceso a los servicios de OData (teniendo en cuenta lo que hemos comentado más arriba sobre el puerto):

Acceso a los datos publicados

En la siguiente pantalla le indicaremos que conjuntos de datos queremos obtener:

Acceso a los datos publicados

En este punto, PowerPivot hará la conexión con nuestra base de datos y recuperará todos los datos:

Datos recuperados correctamente

Una vez hemos recuperado los datos, tenemos que indicarle a PowerPivot la relación que hay entre las distintas tablas. En este ejemplo, hemos recuperado la tabla de productos y la tabla de movimientos de producto. Lo que hacemos es decirle que el campo Item_No de los movimientos de producto está relacionado con el campo No de la tabla producto:

Crear relación de PowerPivot

Crear relación de PowerPivot

En este punto ya tenemos los datos en PowerPivot y las relaciones que hay entre todos ellos. Por lo tanto, podemos cerrar PowerPivot y regresar a la hoja de Excel origen.

Ya en Excel vamos a insertar una nueva tabla dinámica, pero atención, esta tabla dinámica va ser una tabla dinámica de PowerPivot y no una tabla dinámica convencional. Pronto veremos las diferencias:

Insertar tabla dinámica

Como vemos, tenemos a nuestra disposición todos los datos de PowerPivot y ya podemos empezar a jugar colocando campos como etiquetas de fila, suma de valores y segmentos. En este ejemplo hemos montado esta configuración (todos los campos pertenecen a mov. producto):

Configuración de tabla dinámica de stock con segmentos

Y el resultado es el siguiente:

Tabla dinámica de stock con segmentos

La principal ventaja de los segmentos es que podemos interactuar con ellos seleccionando uno o varios. Al seleccionar los datos que se muestran varían pero también afecta al resto de segmentos de la tabla dinámica.

Tabla dinámica de stock con segmentos

 Por lo tanto, se convierte en una herramienta muy ágil para la explotación avanzada de los datos.