Retorno de um DataSet

tenho uma integração com o Protheus e para receber o codigo do cliente tenho um metodo no ws que envio o cpf/cnpj e ele me retorna o codigo


//recebo o dado via zoom
var cliente1 = codCliente(form.getValue("CCLIENTE"));

function codCliente(cliente){
    var clt = {
            "cgc" : cliente
    }
     var json = JSONUtil.toJSON(clt);
     var constr = DatasetFactory.createConstraint("clt", json, json, ConstraintType.MUST);

      var cliente = DatasetFactory.getDataset("ds_listarClientes", new Array("cODCLIENTE"), new Array(constr), null);


    return cliente;
}

dou um console.log no cliente1 e recebo esse log
2018-07-26 15:22:56,888 INFO  [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-170) com.datasul.technology.webdesk.dataset.CustomizedDataset@63df2259

Boa tarde Willian,

tens que listar os valores do dataset para ver se retornou algo:


for(var i = 0; i < cliente.rowsCount; i++){
   log.info(cliente.getValue(i, "cODCLIENTE"));
}

Se você quiser ver tudo que tem dentro do objeto cliente pode usar log.dir(cliente);

na verdade este dataset é de consulta a um wb e fiz uma analise linha a linha e


function buscaCod(cgc){
	var id = {
			
			 "cgc" : cgc 
			
	}
	var clt = JSONUtil.toJSON(id);
	
	var codclt = DatasetFactory.createConstraint("id", clt, clt, ConstraintType.MUST);
	
	var idclt = DatasetFactory.getDataset("ds_listarClientes", new Array("cODCLIENTE"), new Array(codclt), null); // Meu Problema esta aqui
	
	
 return idclt;
}


Eu tenho de enviar o cgc pra retornar o os dados do usuario porem ja tenho alguns dados clientes que não tem cgc e por isso ja estao no data set e quando uso


for(var i = 0; i < cliente.rowsCount; i++){
   log.info(cliente.getValue(i, "cODCLIENTE"));
}
//ou 
log.dir(cliente);

ele lista estes dados que já estão na base

No caso o ds_listarClientes é um Dataset gerado via Painel de Controle isso? Se você puder postar aqui como está a função data() do ds_listarClientes.


function data() {
    return {
  "fluigService" : "WEBSERVICE TESTE",
  "operation" : "listarclientes",
  "soapService" : "TVCNMUNDIWARE",
  "portType" : "TVCNMUNDIWARESOAP",
  "locatorClass" : "_175._159._68._177._54512.TVCNMUNDIWARE",
  "portTypeMethod" : "getTVCNMUNDIWARESOAP",
  "parameters" : [ ],
  "inputValues" : {
    "cgc" : ""
  },
  "inputAssignments" : {
    "cgc" : "VALUE"
  },
  "outputValues" : {
    "cONTATO" : "",
    "tIPO" : "",
    "dDD" : "",
    "cODMUN" : "",
    "cODCLIENTE" : "",
    "cOMPLEMENTO" : "",
    "nOMECLIENTE" : "",
    "cEP" : "",
    "eMAIL" : "",
    "lOJACLIENTE" : "",
    "eNDERECO" : "",
    "iNSCREST" : "",
    "bAIRRO" : "",
    "eSTADO" : "",
    "tIPOPESSOA" : "",
    "oPTSIMPLES" : "",
    "tELEFONE" : "",
    "fAX" : "",
    "mUNICIPIO" : "",
    "cGC" : "",
    "nFANTASIA" : ""
  },
  "outputAssignments" : {
    "cONTATO" : "VALUE",
    "tIPO" : "VALUE",
    "dDD" : "VALUE",
    "cODMUN" : "VALUE",
    "cODCLIENTE" : "VALUE",
    "cOMPLEMENTO" : "VALUE",
    "nOMECLIENTE" : "VALUE",
    "cEP" : "VALUE",
    "eMAIL" : "VALUE",
    "lOJACLIENTE" : "VALUE",
    "eNDERECO" : "VALUE",
    "iNSCREST" : "VALUE",
    "bAIRRO" : "VALUE",
    "eSTADO" : "VALUE",
    "tIPOPESSOA" : "VALUE",
    "oPTSIMPLES" : "VALUE",
    "tELEFONE" : "VALUE",
    "fAX" : "VALUE",
    "mUNICIPIO" : "VALUE",
    "cGC" : "VALUE",
    "nFANTASIA" : "VALUE"
  },
  "extraParams" : {
    "enabled" : false
  }
}
}

Tente enviar o cgc como uma constraint direta, sem criar um json: function buscaCod(cgc){ var codclt = DatasetFactory.createConstraint("cgc", cgc, cgc, ConstraintType.MUST); var idclt = DatasetFactory.getDataset("ds_listarClientes", new Array("cODCLIENTE"), new Array(codclt), null); return idclt; }

var x = buscaCod(form.getValue(“CCLIENTE”));//chamada da função
function buscaCod(cgc){

var codclt = DatasetFactory.createConstraint("cgc", cgc, cgc, ConstraintType.MUST);
log.dir(codclt);
var idclt = DatasetFactory.getDataset("cliente", new Array("cODCLIENTE"), new Array(codclt), null);
log.dir(idclt);

return idclt;
}//coloquei log.dir e tambem tente com console.log mas isso que me retorna




2018-07-27 15:13:32,031 INFO [com.totvs.technology.ecm.services.cardpublisher.CardPublisherRest] (default task-62) saveNewCardItem documentVo.getInheritSecurity() true

Esse é um log padrão do fluig quando você cria um no registro de formulário, não é o log.dir do seu dataset. Tens o completo da execução?

Consegui na verdade o dataset estava zuado, excluie criei um novo e tudo funcionou, vlw @Diogo

Por favor, vejam se pode me ajudar.

No meu caso, um dos inputValues, vai ser uma array de string dinâmica, como passo um array na Constraint

... "inputValues" : { "parameters" : [ "blCnpj;112233", "retornoIntegracao;2019" ] }, "inputAssignments" : { "parameters" : [ "VALUE", "VALUE" ] }, ...

no dataset estou passando:

parameters = "blCnpj;112233, retornoIntegracao;2019" var cParameters = DatasetFactory.createConstraint("parameters", parameters,parameters, ConstraintType.MUST); var constraint = new Array(parameters); var result = DatasetFactory.getDataset("ds_pdy", null, constraint, null);

Tente passando um array de string mesmo mas transformando em string utilizando JSON.stringify: parameters = JSON.stringify(["blCnpj;112233", "retornoIntegracao;2019"]);

Consegui aqui, mas de outro jeito… como estava passando uma string, então tratei ele com split e joguei num array.

var parameters = ;
var strSplit = constraints[i].initialValue.split(“,”);
for (j = 0; j < strSplit.length; j++) {
if(strSplit[j].trim() != “”){
parameters.push(strSplit[j].trim());
}
}