jueves, 27 de febrero de 2014

Pasar BigText a XML en Navision

¡La de problemas que me he encontrado para trabajar con los BigText en Navision!.
Su manejo no es intuitivo y se necesita de un poco de conocimiento previo a la hora de utilizarlo.
En particular, mi necesidad de las variables del tipo BigText surgen en un proyecto en el que desde un servidor de navision consumia los web services de otro servidor de Navision. En futuros posts comentare los pormenores de este proyecto, pero el post actual es para comentar uno de los quebraderos de cabeza que mas amargado me ha tenido.
En un determinado momento y por necesidades varias, me veo en el plan de transformar un BigText a XML. Sencillo, ¿No? aqui por ejemplo hay una solucion para leer bigtext y pasarlo a XML.
Pues bien, así utilice mi variable BigText, poniendo FORMAT() para que me leyese el contenido y en principio me funciono estupendamente.
Pero no podia ser tan bonito, si leemos la definicion de la funcion format vemos que indica que es para variables de tipo simple ysi leemos la definicion del tipo de datos BIGTEXT vemos que es compleja. Por lo que en teoria no deberia de funcionar, pero funciona!!!.
ERROR!!!!!!!!
No funciona!!!!!!!!!!
Bueno, para ser correctos, funciona cuando el BigText no contiene muchos caracteres, el error que da es el de Excedido el tamaño del bufer.

Por lo que la única solución correcta es la de utilizar InStream y OutStream.
Por lo que en realidad se deberia hacer así:
XmlDocPasado.async := FALSE;
TempBlob.HTML.CREATEOUTSTREAM(ostream);
BTPasado.WRITE(ostream);
TempBlob.CALCFIELDS(HTML);
TempBlob.HTML.CREATEINSTREAM(istream);
XmlDocPasado.load(istream);

Ocurre exactamento lo mismo con la variable Automation 'Navision Attain Hash 1.0'.BSTRConverter y su metodo BSTR. PArece que con este metodo nos va a devolver un bonito chorro de carácteres para pasar a nuesto XML y idem de idem, Excedido el tamaño del bufer.

No hay comentarios:

Publicar un comentario