Fechas en inglés en WebServices

Quizás habéis visto que las fechas que son devueltas por un WebService de NAV en formato texto y que han sido convertidas a través de FORMAT(fecha) vienen en el formato MM/DD/YYYY en vez de DD/MM/YYYY.

La solución es muy sencilla: Abrid el cliente de roles utilizando el mismo usuario que utiliza vuestro WebService. Una vez dentro poned el idioma a español y salid. Con esto, se modificará un registro en la tabla 2000000073 (User personalization) donde queda guardado el idioma que utiliza el usuario. Después de esto, hay que reiniciar el servicio NAV Business Web Services.

Si después de esto, todavía sigue sin aparecer correctamente, hay que verificar que en la carpeta C:Program Files (xxx)Microsoft Dynamics NAV60Service no sólo tenemos el idioma ENU. Para instalar más idiomas, hay que buscar en el DVD de NAV la ruta InstallersESServer y ejecutar el instalador. Por último, como no, hay que volver a reiniciar el servicio.

ACTUALIZACIÓN: No recomiendo reiniciar los servicios de NAV. Es mejor parar los dos servicios de tercera capa y volver a arrancarlos.

Uno rapidito: Una función muy útil

No sé si le habrá pasado a alguien más, pero en alguna ocasión he necesitado retornar un valor decimal forzado a dos decimales. Lo que a priori puede parecer que se soluciona con un ROUND acaba conviertiéndose en un dolor de cabeza cuando el número es un entero.

Por ejemplo: “ROUND(1.91,0.01)” nos devuelve “1.91” pero “ROUND(1.90,0.01)” nos devuelve “1.9”. Cuando estamos utilizando esto para exportar datos, los valores nos quedan desordenados y mal tabulados. La solución para mi ha sido utilizar esta línea:

format(round(NUMERO,0.01),0,'<Precision,2:2><Standard Format,0>’);

La versión 2 de ésto ha sido esta útil función que hace lo mismo pero permitiéndole indicar el número de posiciones decimales que quiero: