Mostrando entradas con la etiqueta RTC. Mostrar todas las entradas
Mostrando entradas con la etiqueta RTC. Mostrar todas las entradas

jueves, 26 de noviembre de 2015

Consumir Web Service / Servicio Web SOAP II (RTC)


Hace un tiempo publicamos un post indicando como consumir un web service desde navision(Consumir Web service SOAP ), está funcionalidad se podía utilzar en el cliente clásico y hasta la version 2009. Ahora con el cambio de platafarma y hasta la version 2016 en la que se implementa una funcionalidad específica para realizar esto, la solución que hemos encontrado es la siguiente.

En resumen, lo que se hace es crear el fichero Xml directamente luego lo enviamos al web service y leemos la respuesta. En este caso enviamos dos parámetros y recogemos un valor booleano que nos devuelve una codeunit.


Variables.

Name                  DataType      Length
URL                    Text              250
Metodo               Text              1024
NameSpace         Text              80
NodeList             Automation    'Microsoft XML, v6.0'.IXMLDOMNodeList  
xmlhttp                Automation    'Microsoft XML, v6.0'.XMLHTTP  
xmldoc                Automation    'Microsoft XML, v6.0'.DOMDocument  
soapEnvelope      Automation    'Microsoft XML, v6.0'.IXMLDOMElement  
soapBody            Automation    'Microsoft XML, v6.0'.IXMLDOMElement  
soapMethod        Automation    'Microsoft XML, v6.0'.IXMLDOMElement  
soapAtributo        Automation    'Microsoft XML, v6.0'.IXMLDOMElement  
node                    Automation    'Microsoft XML, v6.0'.IXMLDOMNode  
parametersXmlDoc    Automation    'Microsoft XML, v6.0'.DOMDocument  
xmldoc2               Automation    'Microsoft XML, v6.0'.DOMDocument   


Función LlamarWS(Producto : Code[20];TipoMod : Code[20]) Result : Boolean

Result := FALSE;

//iniciar llamada al web service
URL:='http://localhost:7047/DynamicsNAV/ws/company/Codeunit/nombreCodeunit';
Metodo:='PruebasWS';
NameSpace:='urn:microsoft-dynamics-schemas/codeunit/nombreCodeunit';

// Crear el documento xml
CREATE(xmldoc,TRUE,TRUE);

// Crear el envelope SOAP
soapEnvelope := xmldoc.createElement('Soap:Envelope');
soapEnvelope.setAttribute('xmlns:Soap', 'http://schemas.xmlsoap.org/soap/envelope/');
xmldoc.appendChild(soapEnvelope);

// Crear el cuerpo del SOAP
soapBody := xmldoc.createElement('Soap:Body');
soapEnvelope.appendChild(soapBody);

// Crear el método del body
soapMethod := xmldoc.createElement(Metodo);
soapMethod.setAttribute('xmlns', NameSpace);
soapBody.appendChild(soapMethod);

// Crear los parametros del metodo.
soapAtributo:= xmldoc.createElement('oarametro1');
soapAtributo.text(textoParametro1);
soapMethod.appendChild(soapAtributo);

soapAtributo:= xmldoc.createElement('parametro2');
soapAtributo.text(textoParametro1);
soapMethod.appendChild(soapAtributo);

//Enviar fichero al web service
CREATE(xmlhttp, TRUE, TRUE);
xmlhttp.open('POST', URL, FALSE);
xmlhttp.setRequestHeader('Content-type', 'text/xml; charset=utf-8');
xmlhttp.setRequestHeader('SOAPAction', Metodo);
xmlhttp.send(xmldoc);

//si la respeusta es Ok devuelve valor 200
IF xmlhttp.status=200 THEN
BEGIN
  xmldoc := xmlhttp.responseXML;
  xmldoc.setProperty('SelectionLanguage','XPath');
  xmldoc.setProperty('SelectionNamespaces','xmlns:tns="'+NameSpace+'"');
  NodeList := xmldoc.selectNodes('//tns:'+'return_value');
  Result := TRUE;
  if NodeList.item(0).text = 'true' then
    Exit(TRUE);
End;
Exit(FALSE);


Tambien se podria realizar la lectura del Xml devuelto pero eso ya depende de los gustos de cada uno.

Variables
xmldoc2                Automation    'Microsoft XML, v6.0'.DOMDocument   

IF ISCLEAR(xmldoc2) THEN
  CREATE(xmldoc2,TRUE,TRUE);
xmldoc2.load(xmlhttp.responseXML);
xmldoc2.save('ruta\fichero.xml');

miércoles, 25 de febrero de 2015

Identificar entorno NAV versiones RTC

Exite la posibilidad en RTC de identificar la base de datos en la que nos encontramos, esto permite que en un vistazo veamos la base de datos en la que estamos trabajando ya sea en pruebas o en real en vez de tener que ir a buscar esta información cada vez que queramos comprobar donde estamos. para configurarlo es necesario ir a Información de empresa --> Indicador del sistema
En el indicador del sistema se establece el tipo de indicador, si queremos poner un texto nuestro utilzamos la opción de "texto personalizado". En el campo de enfasis se definen los matices con los que queremos que se refleje el indicador. En texto personalizado definimos el texto del indicador.