Ir para o conteúdo principal

JEX - Percorrer e alterar resultado de uma grade

Neste fórum iremos mostrar como percorrer e alterar os registros mostrados pela grade de dados utilizando JEX (JS Sandbox). Abaixo estão alguns materiais que podem ajudar no entendimento do processo: 

Exporte o processo em anexo ou siga as instruções abaixo: 

Criamos uma atividade manual com um formulário de FK nos trará os processos e suas informações. Lembre-se, o JavaScript é case sensitive então preste atenção no IDENTIFICADOR do formulário, é importante fazer exatamente como instruído nesse tópico:

image-1640896503293.png

Crie uma Fk trazendo o IDPROCESSO e DESCRIÇÃO da CRM_PROCESSO. 

image-1640896520994.png

Código JEX ao sair do formulário:

let SQL;
  let arrayIdprocessoPesquisado = formulario.SELECIONAOIDPROCESSO.valor.split(',');//arrayProcessosPesquisadasCliente
  let stringIdprocessoPesquisado = formulario.SELECIONAOIDPROCESSO.valor; //stringProcessosPesquisadasCliente
                            
  if(arrayIdprocessoPesquisado[0] === ""){  
      arrayIdprocessoPesquisado.pop();         //se o campo estiver vazio
  
   // Remove todos registros da grade    
   formulario.INFORMACOESDOIDPROCESSO.registros.splice(0 ,formulario.INFORMACOESDOIDPROCESSO.registros.length);
      
      SQL =`SELECT IDPROCESSO,
                   DESCRICAO,
                   OBJETIVO,
                   STATUS,
                   DATAHORA
             FROM CRM_PROCESSO
             WHERE ROWNUM < 31`;
    
    const DadosIdprocesso  = await conexaoBD.executarConsultaSQL(SQL);
 
    if(DadosIdprocesso){                 //adiciona os dados na grade
         DadosIdprocesso.forEach( dados => {
         const novoRegistro = new Object();
         novoRegistro.IDPROCESSO = dados.idprocesso;
          novoRegistro.DESCRICAO = dados.descricao;
         novoRegistro.OBJETIVO = dados.objetivo;
         novoRegistro.DATAHORA = dados.datahora;
         novoRegistro.STATUS= dados.status;  
         formulario.INFORMACOESDOIDPROCESSO.registros.push(novoRegistro);
      });
    } 
  }  
                           
  if(arrayIdprocessoPesquisado.length){    //se possui valor
     SQL = `SELECT IDPROCESSO,
                   DESCRICAO,
                   OBJETIVO,
                   STATUS,
                   DATAHORA
             FROM CRM_PROCESSO
             WHERE IDPROCESSO = ${stringIdprocessoPesquisado}`//concatena com a variável;

  const resultadoPesquisadasIdprocesso = await conexaoBD.executarConsultaSQL(SQL);

    if(resultadoPesquisadasIdprocesso){
        // Remove todos registros da grade   
                   
        formulario.INFORMACOESDOIDPROCESSO.registros.splice(0, formulario.INFORMACOESDOIDPROCESSO.registros.length);

      //adiciona registros
      resultadoPesquisadasIdprocesso.forEach( dados => {
         const novoRegistro = new Object();
         novoRegistro.IDPROCESSO = dados.idprocesso;
         novoRegistro.DESCRICAO = dados.descricao;
         novoRegistro.OBJETIVO = dados.objetivo;
         novoRegistro.DATAHORA = dados.datahora;
         novoRegistro.STATUS= dados.status;  
         formulario.INFORMACOESDOIDPROCESSO.registros.push(novoRegistro);
      });
    }
  }

Criamos mais um formulário do tipo grade de dados e suas respectivas colunas. Segue imagem abaixo: 

image-1640896636782.png

image-1640896659283.png

Certo, criamos a grade e suas colunas. Agora vamos criar um evento para carregar a grade com alguns processos ao ENTRAR na atividade. Dessa forma, o campo de ID seria usado mais como um campo de pesquisa para ver um processo em especifico. 

Evento Estrutura de repetição - carregar: 

image-1641213310282.png

Lembre-se, o ROWNUM é utilizado em bancos ORACLE, para PostgreSQL utilize o LIMIT = 31 depois do FROM por exemplo:

image-1641213371172.png

  • Não foi possível adicionar o gif neste tópico, clique aqui se quiser ver a demonstração no portal. 
  • Lembre-se, se quiser que caso o usuário não selecione nada na FK o JEX traga a mesma consulta ao entrar na atividade, deve ser modificado o JEX da forma como desejar. No exemplo deste tópico abordamos uma parte da consulta apenas. 
  • Em anexo está o exemplo do BPM, baixe-o e modifique caso necessário.
  • Caso queira que seja salvo em variáveis o que está na grade. ao sair crie uma estrutura de percorrer a grade e retornar o valor com os eventos do sistema.