DataSet não retorna nada

Boa tarde, estou criando um dataset de comunicação REST com o Protheus,porém a mesma não retorna os dados. Chamei o serviço configurado e pela plataforma o serviço retorna certinho os dados. No Dataset feito, eu não consigo este retorno, segue o código abaixo:

var dsName = “ds_wsgetcc”;

var _log = "## ds_wsgetcc ## ";

var objColumn = [ { NAME: “CodCC”, TYPE: “”, KEY: true, VAL_REF: “CodCC” }, { NAME: “DescriCC”, TYPE: “”, KEY: false, VAL_REF: “DescriCC” } ];

function defineStructure() {

var key = ;

objColumn.forEach(function (row) { var type = undefined;

if (row.TYPE == “NUMBER”) { type = DatasetFieldType.NUMBER; } else if (row.TYPE == “STRING”) { type = DatasetFieldType.STRING; }

if (row.KEY) { key.push(row.NAME); } addColumn(row.NAME, type); });

if (key.length > 0) { setKey(key); }

}

function onSync(lastSyncDate) {

var ds_wsgetcc = DatasetBuilder.newDataset();

try {

ds_wsgetcc = clearDataset(ds_wsgetcc);

var clientService = fluigAPI.getAuthorizeClientService();

var compID = getValue(“WKCompany”);

var data = { companyId: compID + ‘’, serviceCode: ‘WSGETCC’, endpoint: ‘http://IP:PORTA/rest/fluig/api/wsgetcc/v1/consultaCC’, method: ‘GET’, timeoutService: ‘1000’ };

var response = clientService.invoke(JSON.stringify(data));

log.info(_log + " - Response: " + response); log.info(_log + " - getResult: " + response.getResult()); log.info(_log + " - typeof response.getResult(): "); log.info(typeof response.getResult());

var oRetorno = null; var row = new Array();

try { oRetorno = JSON.parse(response.getResult()); console.log(_log + " objeto Centro de Custo: " + JSON.stringify(oRetorno)); } catch (error) { oRetorno = response.getResult(); console.log(_log + " retorno erro Centro de Custo: " + oRetorno); }

if (oRetorno[‘CodCC’]) {

row.push(oRetorno[‘CodCC’]); row.push(oRetorno[‘DescriCC’]);

ds_wsgetcc.addRow(row);

} else if (oRetorno[“code”]) { row.push(“400”); row.push(oRetorno[“code”] + " - " + oRetorno[“message”]);

ds_wsgetcc.addRow(row); } else { row.push(“404”); row.push(oRetorno);

ds_wsgetcc.addRow(row); }

log.info(_log + " finalizou o ds_wsgetcc"); return ds_wsgetcc;

} catch (error) { var row = new Array(); row.push(“400”); row.push("Ocorreu uma falha ao gerar os dados: " + error);

ds_wsgetcc.addRow(row);

console.log(_log + "Ocorreu uma falha ao gerar os dados: " + error);

console.log(_log + " finalizou o dataset"); return ds_wsgetcc; } }

function createDataset(fields, constraints, sortFields) {

}

function onMobileSync(user) {

}

function clearDataset(ds_wsgetcc) {

var dsOld = DatasetFactory.getDataset(dsName, null, null, null);

if (dsOld != null && dsOld.rowsCount > 0) {

for (var i = 0; i < dsOld.rowsCount; i++) { var array = new Array();

objColumn.forEach(function (row) { var ref = row.NAME; var value = dsOld.getValue(i, ref);

array.push(value); }); ds_wsgetcc.deleteRow(array); }

}

return ds_wsgetcc; }

@daltonpjunior , seja muito bem vindo!

Consegue colar o código usando a função de código do fórum? Fica mais fácil de ler:

var teste = assim;

e preserva a formatação. Tem um botão na barra de ferramentas de redação para isso:

image

Seu dataset me parece ok. Tenho aqui um exemplo de consulta de clientes que funciona normalmente, vê se encontra alguma diferença:

function defineStructure() {
	
 	addColumn("A1_COD");
 	addColumn("A1_NREDUZ");
 	addColumn("A1_END");
 	addColumn("A1_MUN");
 	addColumn("A1_EST");
 	setKey(["A1_COD"]);
 	
 	addIndex([ "A1_COD", "A1_NREDUZ","A1_END", "A1_MUN","A1_EST"]);
}

function onSync(lastSyncDate) {
	
	log.info("Entrou na Consulta");
	var dataset = DatasetBuilder.newDataset(); 

try {
	
	//--------------------------------------------------------------------------------------------------
	var clientService = fluigAPI.getAuthorizeClientService();
	var data = {
	          companyId : ''+getValue('WKCompany')+'',
	          serviceCode : 'ServiceClienteP12',
	          endpoint : '?page=1&pagesize=20000',
	          method : 'GET',
	          params : {  },
	          timeoutService: '10000'
	   }
	
	log.info("DATA");	
	log.info(data);
	
	log.info("DATA stringify");
	log.info(JSON.stringify(data));
	
	var vo = clientService.invoke(JSON.stringify(data));
	log.info(vo);
	var x = JSON.parse(vo.getResult());
	//var x = vo.getResult();
	log.info("Valor de X: " + JSON.stringify(x));
	
	for(var i in x.clientes){
		
		dataset.addOrUpdateRow(new Array(x.clientes[i].A1_COD,x.clientes[i].A1_NREDUZ,x.clientes[i].A1_END,x.clientes[i].A1_MUN,x.clientes[i].A1_EST));	
	}
	
	}catch(err){
		
		log.info(err);
	}
	
	return dataset
} 
1 curtida

Opa, boa tarde Daniel.

Muito obrigado pela dica, não tinha visto a formatação aqui.

Eu consegui ajustar, tinha alguns erros no tratamento do if e alterei de console.log para info.log, após isso os dados vieram corretamente.

if (oRetorno != null) {
        	for(var a=0; a< oRetorno.length;a++){
        		var row = new Array();	
        		row.push(oRetorno[a]['CodCC']);
        		row.push(oRetorno[a]['DescriCC']);
                row.push(oRetorno[a]['CodCC']+' - '+ oRetorno[a]['DescriCC']);

	        	ds_wsgetcc.addRow(row);
	        }
        } else {
            row.push("400");
            row.push(oRetorno);
            row.push("");
            
            ds_wsgetcc.addRow(row);
        }

        log.info(_log + " finalizou o dataset");
        return ds_wsgetcc;