
Gran actualización del MS Dynamics NAV Web Service Connector
Nos complace mucho anunciar que hemos realizado una gran actualización de nuestro soporte para los Web Services de MS Dynamics NAV, con funcionalidades totalmente nuevas como la creación de una Sales Order en un solo paso, el soporte para Web Services de tipo Codeunit y, en general, una mejor gestión de errores.
Como muchos de vosotros —nuestros valiosos clientes— ya utilizáis los Web Services de MS Dynamics NAV en vuestras integraciones con MS Dynamics NAV, pensamos que era el momento de dar a este módulo una gran actualización. A partir de vuestros comentarios hemos añadido algunas funcionalidades nuevas muy interesantes.
Nueva funcionalidad: crear Sales Orders de MS Dynamics NAV en un solo paso (una sola transferencia)
Ahora hemos incorporado el soporte para la creación de Sales Orders directamente en nuestro MS Dynamics NAV Web Service Connector. Este soporte especial reconoce que quieres crear una nueva Sales Order en MS Dynamics NAV y, a partir de un único Transfer en el que mapeas tanto la cabecera como las líneas con todos los campos necesarios, ¡el Connector realiza los tres pasos indicados arriba y crea una nueva Sales Order completa en MS Dynamics NAV!
Lee esta entrada «Crear una Sales Order de MS Dynamics NAV con Web Services, muy fácil» para ver una descripción más detallada de esta funcionalidad.
Soporte de DBLookup añadido al MS Dynamics NAV Web Services Connector
Ya puedes usar DBLookup con los MS Dynamics NAV WS Connectors. Si, por ejemplo, quieres obtener el Country Code a partir de un Country Name al crear un nuevo Customer o Contact en MS Dynamics NAV (mediante el Web Service correspondiente), ahora puedes usar DBLookup('DESTDS','Countries','Name',"Country Name",'Code') suponiendo que hayas publicado un Web Service de MS Dynamics NAV llamado "Countries" que permita obtener el código de país.
Para usar esta funcionalidad, necesitas actualizar tanto el servicio central como el RapidiConnector local a la versión 3.2.91y o posterior. Ponte en contacto con nuestro soporte para organizarlo.
Soporte para Codeunits con XMLPorts publicados como Web Services de MS Dynamics NAV
En MS Dynamics NAV puedes publicar como Web Services tanto Pages como Codeunits. Aunque las Pages ofrecen mucha funcionalidad estándar y una integración muy buena en el código de MS Dynamics NAV, ya que básicamente publicas las mismas Pages que se usan para introducir datos, en algunas situaciones concretas en las que necesitas más control sobre el código y los datos una Codeunit puede ser la mejor opción. Nos complace anunciar que ahora hemos añadido esta opción a nuestro MS Dynamics NAV WS Connector.
Cómo construir la Codeunit
Para que RapidiOnline sepa cómo llamar a los métodos de tu Codeunit, tienes que construir la Codeunit de una forma concreta.
En general necesitas métodos llamados "UpdateMultiple", "CreateMultiple" y "ReadMultiple", cada uno con un parámetro var que sea un XMLPort (el mismo XMLPort para todos los métodos). Detectamos el parámetro XMLPort a través de estos métodos y te permitimos crear mapeos a las tablas y los campos especificados en el XMLPort.
Si quieres usar esta nueva funcionalidad, ponte en contacto con nuestro soporte para conseguir código de ejemplo. También tenemos previsto publicar algo más adelante una entrada de blog detallada sobre este tema.
Para usar esta funcionalidad, necesitas actualizar tanto el servicio central como el RapidiConnector local a la versión 3.2.92u o posterior. Ponte en contacto con nuestro soporte para organizarlo.
Soporte de la función SKIPFIELD con el MS Dynamics NAV WS Connector
El verano pasado presentamos una nueva función llamada 'SkipField'. La función se puede usar como parte del mapeo y hace que RapidiOnline pueda omitir dinámicamente el envío de un campo concreto (para un registro concreto) al sistema de destino. Esto es muy útil si quieres conservar el valor ya establecido en el destino (o dejar que el destino cree por sí mismo un valor por defecto), o si el destino no acepta para ese campo un valor determinado, ni siquiera vacío (normalmente en función del valor de otros campos).
Un ejemplo es cuando quieres crear líneas de texto o de comentario en una SalesOrder. En este caso, el Web Service de MS Dynamics NAV no acepta que los campos 'No' (Item No), 'Quantity' y 'UnitPrice' se envíen en esa línea. Podemos usar la función 'SkipField' para lograr exactamente eso, con una fórmula como
##IF(EQUALS(LineType,0),SKIPFIELD(),Quantity)
podemos lograr que el campo Quantity no se envíe al destino si LineType es 0.
La función 'SkipField' ya está soportada con el MS Dynamics NAV WS Connector. Esto incluye que la información de que un campo debe omitirse se envíe al RapidiConnector (también teníamos que conseguir que eso funcionara). Es un cambio en la comunicación entre el servidor central y el RapidiConnector, por lo que hay que actualizar ambos. Aun así, al introducir este cambio seguimos garantizando la compatibilidad hacia atrás en ambos extremos: un RapidiConnector antiguo funcionará con una versión nueva de Rapidi Central y, del mismo modo, un RapidiConnector nuevo funcionará con una versión antigua de Rapidi Central. En la comunicación inicial, ambos acuerdan simplemente qué funcionalidades tienen en común y qué pueden soportar en el protocolo, lo que hace que las actualizaciones sean más flexibles.
Para usar esta funcionalidad, necesitas actualizar tanto el servicio central como el RapidiConnector local a la versión 3.2.92u o posterior. Ponte en contacto con nuestro soporte para organizarlo.
Mejor gestión de errores, mejores mensajes de error, ReadDesign y otras mejoras
Ahora mostramos mejores mensajes de error al usar "All Fields" o cuando no se especifica una Field List. Sigues teniendo que especificar siempre una Field List cuando usas el MS Dynamics NAV WS Connector, pero al menos ahora recibes un mensaje de error bueno y descriptivo que indica qué hay que corregir. Disponible en la versión 3.2.91y
Ahora comprobamos si el servidor MS Dynamics NAV WS devuelve algo distinto de una respuesta HTTP 200 OK y, en ese caso, devolvemos un mensaje de error mejor. El mensaje mejorado permite identificar el problema más rápido y, por tanto, resolverlo más rápido.
'ReadDesign' revisado y mejorado
La funcionalidad 'ReadDesign' del MS Dynamics NAV WS Connector se ha mejorado para detectar más información en los WSDL que genera MS Dynamics NAV. Ahora detectamos automáticamente, por ejemplo, los namespaces, las SOAP actions y el objeto o la tabla principal en uso. Después usamos esa información para generar los mensajes XML que se envían a MS Dynamics NAV WS. Así el conector funciona con más Pages y Codeunits personalizadas y desaparece la exigencia de publicar la Page con el mismo nombre que la tabla principal que usa (antes la Page Customer tenía que publicarse como "Customer" y la Page Sales Order como "SalesOrder"; ya no es necesario). Disponible en 3.2.92s o posterior.
Otras mejoras
Decodificación correcta de campos codificados en UTF-8 procedentes de NAV
Al usar el MS Dynamics NAV WS para leer datos de MS Dynamics NAV o al hacer Updates en MS Dynamics NAV, el MS Dynamics NAV WS Connector no decodificaba correctamente los campos codificados en UTF-8 procedentes de MS Dynamics NAV. Ya está corregido.
Tamaño de Page y de batch ampliados
El tamaño de Page por defecto al leer de MS Dynamics NAV WS ahora es 50 (antes eran solo 5); lo mismo ocurre con el tamaño de batch para enviar registros a MS Dynamics NAV WS (ahora 50 por defecto, antes 5). Estos dos números también se pueden ajustar ahora mediante el archivo local rapidi.cfg (añade NavWSReadMultiplePageSize : xx (50 por defecto) o NavWSUpdateAddBatchSize : xx (50 por defecto)).
Cómo evitar "Server returned a HTTP error code (not 200 OK): 400 Bad Request"
También hemos introducido otro parámetro de rapidi.cfg para controlar si cada petición al servidor MS Dynamics NAV WS debe enviarse por una conexión nueva. Al menos el servidor WS de MS Dynamics NAV 2009R2 lo requiere. Se puede establecer con el parámetro de rapidi.cfg NavWSRestartConnectionEachRequest : 1 (por defecto es 0).
Así se evita un mensaje de error: "Server returned a HTTP error code (not 200 OK): 400 Bad Request"
Ejecución más rápida de las transferencias
Al hacer un Connection Test (al pulsar "Test" en una NAV WS Connection), ahora llamamos al SystemService para comprobar que el acceso está bien configurado (nombre de usuario, contraseña y dominio correctos, y conexión al servidor). Al mismo tiempo hemos eliminado esa llamada extra al SystemService de la inicialización del MS Dynamics NAV WS Connector, porque ya no es necesaria. Esto debería hacer que las transferencias se ejecuten en general un poco más rápido.
Estas funcionalidades están disponibles en la versión 3.2.92u; necesitas actualizar tanto el servicio central como el RapidiConnector local a la versión 3.2.92u o posterior. Ponte en contacto con nuestro soporte para organizarlo.
