Mitra Global Services

Navimania – TryCatch avanzado

Tal como vimos en el Blog anterior, hay una manera de disponer de un Try Catch para nuestros desarrollos en Navision.

Eso sí, el coste será alto porque cada vez que necesitemos usar este método, consumiremos una Codeunit y a no ser que estemos en SaaS, donde las tenemos casi infinitas, 😆 llegará un momento que las agotaremos y deberemos adquirir más.

Pero lo que hoy os traigo es mucho mejor porque concentraremos todos esos procesos que queremos validar en una única Codeunit. 🙄

Y os preguntareis, ¿pero cómo? Pues ahora os lo enseño.

Vamos manos a la obra! 😎

Lo primero será crear una Codeunit y en ella añadir la función en local del proceso que queremos hacer.

En nuestro caso, para este blog, voy a hacer un Insert de cualquier tabla:

Como veis, lo estoy haciendo en un RecordRef así lo podemos utilizar para cualquier tabla.

Crearemos las variables globales que necesitamos:

Ese RecordRef lo añadimos como una variable global para poder manipularlo desde cualquier sitio.

Y la variable FunctionID de momento no es desvelo para qué la utilizaremos, lo veréis al final. 😋

Ahora vamos a la función para insertar los datos que llamaremos desde fuera:

Como podéis ver esta función sí que es publica, ya que es la que llamaremos para nuestra inserción en la tabla.

Lo que hacemos es marcar el FunctionID a 1 (después veréis porqué) e inicializar la variable RecordRef, con el Gettable y el Setview.

Por último en el OnRun añadimos el CLEARLASTERROR y la llamada a nuestra función local:

Un ejemplo de llamada para esta función podría ser el siguiente:

Este ejemplo añadirá un producto nuevo. Si diera error, por ejemplo porque el producto ya existe, entonces nos mostrará el mensaje del error en lugar del error.

Este es solo una muestra de lo que podemos llegar a hacer con este método.

Hay ejemplos de modificación, eliminación, validación de campos, registrar o lanzar un documento de venta…. Bueno un sinfín de casos que he añadido y que podéis ver y trastear tanto como necesitéis.

Como siempre este ejemplo entero lo tenéis colgado en GitHub en el link.

Esperamos que esta explicación os resulte de utilidad y os emplazamos a nuestra próxima publicación.

ES