¡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.