Bom dia! Estou sicronizando um dataset apartir de outro dataset e ele me retorna o erro
TypeError: Cannot read property "rowsCount" from null (#30) in at line number 30
segue meu código abaixo:
function defineStructure() {
addColumn("NUMEMP");
addColumn("NUMCAD");
addColumn("NOMFUN");
addColumn("SITAFA");
addColumn("TITCAR");
addColumn("CODFIL");
setKey(["NUMEMP","NUMCAD"]);
}
function onSync(lastSyncDate) {
var dataset = DatasetBuilder.newDataset();
var fields = new Array();
var where = "";
var branch = "";
fields.push("SB1");
fields.push(where);
fields.push(branch);
fields.push("NUMEMP");
fields.push("NUMCAD");
fields.push("NOMFUN");
fields.push("SITAFA");
fields.push("TITCAR");
fields.push("CODFIL");
var resultadoHCM = DatasetFactory.getDataset("teste_000_hcm", fields, null, null);
for (var i = 0; i < resultadoHCM.rowsCount; i++){
var NUMEMP = resultadoHCM.getValue(i, "NUMEMP");
var NOMFUN = resultadoHCM.getValue(i, "NOMFUN");
var SITAFA = resultadoHCM.getValue(i, "SITAFA");
var TITCAR = resultadoHCM.getValue(i, "TITCAR");
var CODFIL = resultadoHCM.getValue(i, "CODFIL");
dataset.addOrUpdateRow([NUMEMP, NUMCAD, NOMFUN, SITAFA, TITCAR, CODFIL]);
}
log.info(testeSync)
return dataset;
}
function createDataset(fields, constraints, sortFields) {
}function onMobileSync(user) {
}
Oi, Aline, passei pelo mesmo problema recentemente. Fucei de tudo, e encontrei o que provocava o erro. O meu dataset secundário, o que era consultado para trazer as informações para o sincronizado possuía a seguinte chamada para consumo de uma API Rest:
var clientService = fluigAPI.getAuthorizeClientService();
var data = {
companyId : getValue("WKCompany") + '',
serviceCode : 'erp_protheus',
endpoint : '/TESTECONS',
method : 'POST',
timeoutService: '600', // segundos
params : {
"PARAMETRO":"TESTE DAS CONSULTAS"
}
}
Para resolver o problema, precisei remover a chamada do parâmetro "WKCompany", passando realmente o código da empresa diretamente. A chamada ficou desse jeito:
var clientService = fluigAPI.getAuthorizeClientService();
var data = {
// companyId : getValue("WKCompany") + '', // com essa linha ele não consegue sincronizar
companyId : '1',
serviceCode : 'erp_protheus',
endpoint : '/TESTECONS',
method : 'POST',
timeoutService: '600', // segundos
params : {
"PARAMETRO":"TESTE DAS CONSULTAS"
}
}
A solução me atendeu já que é utilizada somente uma empresa, porém, se essa informação for variável para você, pode tentar passar esse valor via Constraints. As Constraints que enviei todas foram acessadas, logo, acredito que não teria problemas.
Boa sorte!
Muito Obrigada!! Eu estava com esse problema e deu certo essa solução. Só deixei o comentário para agradecer.