Hola existe forma de hacer Update de un dato de un formulario via webservices. Tienen un ejemplo. Lo quiero realizar de un proceso ajeno al formul
Hola existe forma de hacer Update de un dato de un formulario via webservices. Tienen un ejemplo. Lo quiero realizar de un proceso ajeno al formul
Existe sim aqui está a documentação http://tdn.totvs.com/pages/releaseview.action?pageId=73084007 (procurar por updateCardData).
Exemplo (Usando no JavaScript):
var soapRequest = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.dm.ecm.technology.totvs.com/"><soapenv:Header/>';
soapRequest += '<soapenv:Body>';
soapRequest += '<ws:updateCardData>';
soapRequest += '<companyId>'+WCMAPI.organizationId+'</companyId>';
soapRequest += '<username>'+myUser+'</username>';
soapRequest += '<password>'+myPass+'</password>';
soapRequest += '<cardId>'+documentId/cardId+'</cardId>';
soapRequest += '<cardData>';
soapRequest += '<item>';
soapRequest += '<field>'+fieldName+'</field>';
soapRequest += '<value name="'+fieldName+'">'+value+'</value>';
soapRequest += '</item>';
soapRequest += '<item>';
soapRequest += '<field>'+field2Name+'</field>';
soapRequest += '<value name="'+field2Name+'">'+value2+'</value>';
soapRequest += '</item>';
soapRequest += '</cardData>';
soapRequest += '</ws:updateCardData>';
soapRequest += '</soapenv:Body>';
soapRequest += '</soapenv:Envelope>';
var parser = new DOMParser();
WCMAPI.Create({
url: WCMAPI.serverURL + "/webdesk/ECMCardService?wsdl",
contentType: "text/xml;charset=utf-8",
dataType: "xml",
data: parser.parseFromString(soapRequest, "text/xml")
});
As variáveis utilizadas são:
myUser: Usuário para a requisição. myPass: Senha do usuário. documentId/cardId: Número do formulário a ser atualizado; fieldName: Campo value: Valor
Exemplo (Usando em eventos do formulário):
//Servico "<url_fluig>/webdesk/ECMCardService?wsdl"cadastrado com o código "CardService"
var cardServiceProvider = ServiceManager.getServiceInstance("CardService");
var cardServiceLocator = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.ECMCardServiceServiceLocator");
var cardService = cardServiceLocator.getCardServicePort();
var cardFieldDtoArray = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.CardFieldDtoArray");
var cardField = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.CardFieldDto");
//Seta valor no campo com name = 'nome'
cardField.setField("nome");
cardField.setValue("Valor alterado via WS dentro de um evento workflow");
var vetCardFields = new Array();
vetCardFields.push(cardField);
cardFieldDtoArray.setItem(vetCardFields);
//Altera o(s) campo(s) do registro de formulário.
//updateCardData(tenantId, login, senha, codRegistroForm, cardFieldDtoArray);
cardService.updateCardData(1, "adm", "adm", 8, cardFieldDtoArray);
Muchas Gracias Guilherme voy a probar eso.
— Ruben Seoane 05 de Jun de 2017Seu problema foi solucionado?
— Guilherme Fontaniva 06 de Jun de 2017Hola Guilherme, intenté utilizar el código adjunto desde un widget como desde un evento del workflow, pero no logré que funcionara. Me queda dudas porque actualmente utilizo el mismo servicio con el método create y si funciona. Me dejó dudas el user y pass, que en el create no los utilizo.
Se você olhar a documentação (http://tdn.totvs.com/pages/releaseview.action?pageId=73084007) o mesmo WebService do exemplo tem um método de criação de card, porém na documentação ele diz que precisa de usuário e senha. Nunca cheguei a testar sem passar esses parâmetros pra ver se funciona.
— Guilherme Fontaniva 06 de Jun de 2017Çomo adiciona La password del wkuser?
— Ruben Seoane 06 de Jun de 2017Coloca como string mesmo. EX myUser = "user"; myPass = "1234";
— Guilherme Fontaniva 06 de Jun de 2017No caso o usuário e a senha são do requisitante do WS, você coloca o seu usuário e senha pra utilizar.
— Guilherme Fontaniva 06 de Jun de 2017Hola Guilherme, estoy intentando aplicar el updatecarddata desde el evento del workflow afterStateLeave, pero no logro que funcione. tampoco tengo mensajes en el console. No se si a usted le ha ocurrido.
— Ruben Seoane 07 de Jun de 2017