segunda-feira, 2 de janeiro de 2023

Auto Preenchimento via integração Rest API ViaCep (Avançado) Servicenow GlideAjax

 



Primeiro será criado o item de catalogo via Record Producer:


Após salvar vamos inserir as variáveis, em variables clique em new:


Conforme o exemplo abaixo repita para todas as outras variáveis ficando atento as condições das colunas acima, os nomes devem estar exatamente iguais para que o Client Script consiga localizar.


Agora vamos configurar o Script Include que será responsável pela integração com a ViaCep.

Nesse passo é necessário acessar aqui Consumindo API de CEP via Servicenow Rest Message para gerar a sua integração, após ter realizado esse passo com sucesso você vai extrair o código que será usado no Script Include.

Crie um novo Script Include, insira o nome conforme a imagem abaixo e salve para continuar na página, após isso a estrutura do script auto gerada.


Agora volte na Rest Message responsável pela integração gerada anteriormente e clique em Default Get, na Related List clique em Preview Script Usage.


Copie o código gerado para ser utilizado no Script Include.


O código que estiver depois do // pode ser excluído, o código será modificado para deixar a busca dinâmica.

searchForCEP: function() {
        var cep = this.getParameter('sysparm_cep'); // Parâmetro recebido

        try {

            var r = new sn_ws.RESTMessageV2('CEP', 'Default GET');
            r.setStringParameterNoEscape('cep', cep); // Parâmetro que será recebido
            var response = r.execute();
            var responseBody = response.getBody();
            var httpStatus = response.getStatusCode();

            return responseBody; //Retorno dos dados

        } catch (ex) {
            var message = ex.message;
            gs.info('Erro CEP_Client: ' + message); // Menssagem indicando o erro
        }
    },
 



Agora vamos voltar ate o item criado via Record Producer.


Clique em Catalog Client Script e em new, preencha as informações conforme a imagem abaixo.

Insira o script abaixo.

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

    var ga = new GlideAjax('global.CEP_Client');
    ga.addParam('sysparm_name', 'searchForCEP');
    ga.addParam('sysparm_cep', newValue);
    ga.getXML(callback);
 
    function callback(response) {
 
        var answer = response.responseXML.documentElement.getAttribute("answer");
        var data = JSON.parse(answer.replace(/\r?\n|\r/g, ''));//Remove as quebras de linha
        g_form.setValue('logradouro', data.logradouro);
        g_form.setValue('bairro', data.bairro);
        g_form.setValue('localidade', data.localidade);
        g_form.setValue('uf', data.uf);      
    }

   
}


Abra o item criado anteriormente em Record Producer e clique em Try it.



Insira qualquer CEP para teste.


Os campos serão preenchidos automaticamente, se houver algum problema reveja os passos anteriores.






Nenhum comentário:

Postar um comentário

Adicionando campos ao formulário - Servicenow

 1 - Abra a lista da tabela criada recentemente All > nome da tabela e clique em "New". 2 - Clique no context menu > Configu...