Olá a todos,
Estou tentado fazer uma consulta a um dataset quando clico no botão salvar/enviar através do evento beforeTaskSave:
function beforeTaskSave(colleagueId, nextSequenceId, userList) {
var Codigo = hAPI.getCardValue("CODIGO");
log.warn("BEFORE-TASK");
log.info("CODIGO: " + Codigo);
log.info("NEXT-SEQUENCE-ID" + nextSequenceId);
log.info("CODIGO-LENGTH" + Codigo.length());
if (nextSequenceId == 5 && Codigo.length() == 9) {
log.warn("PASSOU NO IF !!!");
var c1 = DatasetFactory.createConstraint("CODIGO", "%" + Codigo + "%", "%" + Codigo + "%", ConstraintType.SHOULD);
var constraints1 = new Array(c1);
var fields1 = new Array("CODIGO");
var dataset4 = DatasetFactory.getDataset("SolicitacaoDeVerba", fields1, constraints1, null);
log.warn(dataset4);
if (dataset4.values.length() <= 0)
$("#CODIGO").val(Codigo + "001");
}
}
Porém o mesmo apresenta erro no momento em que eu tento fazer esse if if (dataset4.values.length() <= 0)
Abaixo segue o erro do log:
(default task-66) [Solicitação: 280] - Processo: SolicitacaodeVerbas - versão: 25 - Usuário Executor : allan.silva - Gestor : Não - Substituto : Não - Estado atual : 4 - Estado destino : 5 - Executando evento : beforeTaskSaveERRO AO EXECUTAR SCRIPT -> NOK - sun.org.mozilla.javascript.internal.EvaluatorException: Java class "[[Ljava.lang.Object;" has no public instance field or method named "__noSuchMethod". (#18) in at line number 18
Acredito que o seu erro seja no "$("#CODIGO").val(Codigo + "001");" e não no IF, pois o evento é realizado em back-end e o comando jQuery não irá ser reconhecido. Nessa caso você vai ter que usar o hAPI.setCardValue(). Abraço!
— Kanaãm Luz Romero Rodrigues 21 de Mar de 2018Boa Tarde Kanaãm,
Alterei o meu IF e deixei dessa forma
if (dataset4.values.length() <= 0) {
log.warn("PASSOU NO IF 2 !!!");
}
mesmo assim ele ainda continua dando erro na linha do IF.
— Allan Santos 21 de Mar de 2018Ahhh, você está usando .length() como se fosse um método, porém length é um atributo do objeto. Tire os parenteses. Abraço!
— Kanaãm Luz Romero Rodrigues 21 de Mar de 2018Kanaãm, deu certo aqui cara muito obrigado.
Só fiquei com uma dúvida, o retorno no dataset, é um array, como eu faço pra percorrer ele no beforetaskSave ?
— Allan Santos 21 de Mar de 2018Allan, você também pode usar dataset4.rowsCount para saber o número de registros retornados do dataset. Para percorrer o resultado do dataset você pode usar o método getValue(): for (var i = 0; i < dataset4.rowsCount; i++) { log.info(dataset4.getValue(i, "CODIGO")); }
— Diogo Boegershausen 21 de Mar de 2018Diogo e Kanaãm, muito Obrigado pelas respostas, deu tudo certo.
— Allan Santos 26 de Mar de 2018