logo

NJP

Lado do Cliente vs Lado do Servidor

New article articles in ServiceNow Community · Aug 17, 2025 · article

Imagine que do lado do Cliente temos um formulário com os campos sys_id, first_name, last_name e email.

Quando o usuário colar o sys_id de um usuário no campo sys_id e apertar Tab para mudar de campo, a plataforma deve:

- Ir até o Banco de Dados e trazer informações referentes a esse sys_id na tabela de Usuários.

É isso o que vamos implementar nesse artigo.

1 - Abra a sua PDI

2 - Navegue até System Definition > Script Includes

2.1 - Clique em “New” e crie o Script Include

Name: TeacherCarlos

Application: Global

Client callable: checked

Script:

var TeacherCarlos = Class.create(); TeacherCarlos.prototype = Object.extendsObject(AbstractAjaxProcessor, { //Receive User sys_id and return User data Dados_usuario: function() { var obj = {}; var userID = this.getParameter('sysparm_userid'); var myuser = new GlideRecord('sys_user'); myuser.addQuery('sys_id', userID); myuser.query(); if (myuser.next()) { obj.sys_id = myuser.getValue('sys_id') || ''; obj.first_name = myuser.getValue('first_name') || ''; obj.last_name = myuser.getValue('last_name') || ''; obj.email = myuser.getValue('email') || ''; } return JSON.stringify(obj); }, type: 'TeacherCarlos' });

2.2 Clique em Submit

2.3 Informe a role admin e clique em OK

3 - Navegue até System Definition > Tables

3.1 Clique em “New"

Label: Test

Name: u_test

Create module: checked

Add module to menu: Self-Service

Columns:

Screenshot 2025-08-17 at 04.21.26.png

-Clique em Submit

4 - No canto superior esquerdo clique em All e na caixa de pesquisa digite “u_test.config” (ENTER)

5 - Navegue até a seção “Client Scripts” e clique em “New”

Informe:

Name: Bring User Data

O nome da tabela já vai vir preenchido

UI Type: All

Type: onChange

Field name: sys_id // Não é Sys ID

Script:

function onChange(control, oldValue, newValue, isLoading, isTemplate) { if (isLoading || newValue === '') { return; } var test = g_form.getValue('u_sys_id'); //alert(test); var ga = new GlideAjax('TeacherCarlos');//script include name ga.addParam('sysparm_name', 'Dados_usuario'); //method to be called ga.addParam('sysparm_userid', test); //send a parameter to the method ga.getXMLAnswer(userInfoParse); function userInfoParse(response) { if (response == '') { g_form.addErrorMessage('User not found with the informed sys_id.'); } else { //alert(response); var obj = JSON.parse(response); //alert(obj.first_name.toString()); g_form.setValue('u_sys_id', obj.sys_id.toString()); g_form.setValue('u_first_name', obj.first_name.toString()); g_form.setValue('u_last_name', obj.last_name.toString()); g_form.setValue('u_email', obj.email.toString()); } } }

6 - Agora é possível ir até a tabela de Usuários e copiar um sys_id clicando com o botão direito em qualquer registro no valor da coluna User ID.

7 - Navegando até All novamente, você pode digitar (nomedatabela.do ENTER) para abrir o formulário de entrada de dados.

8 - Cole o sys_id copiado na coluna sys_id e pressione Tab para mudar para outro campo.

Isso vai chamar o Client Script.

O Client Script vai chamar o Script Include e trazer os dados do Usuário de volta para o lado do Cliente.

Finalmente, o Client Script trata a resposta para definir os valores dos campos na tela, exibindo esses valores ao usuário.

Obrigado.

View original source

https://www.servicenow.com/community/brazil-snug/lado-do-cliente-vs-lado-do-servidor/ta-p/3353568