Caller Field Auto-Population Issue

Community Alums
Not applicable

Hi, 

Here is a form that users need to fill out. Once the caller field is populated, the machine name and IP address fields should auto-populate, but its not happening. I'm not sure why. Any assistance would be appreciated.

 

Carol6_0-1707220046228.png

 

script include: 

    getIPandMachineName: function() {
        var note = "";
        //var machinename = '';
        var req = this.getParameter("sysparm_user");
        var ast = new GlideRecord("cmdb_ci_hardware");
        ast.addQuery("sys_class_name""6f2bacd8dbd19450655c5bd05b9619f9");
        ast.addQuery("assigned_to", req);
        ast.addQuery("install_status""1");
        //ast.addQuery("sys_id", srn);
        ast.query();
        if (!ast.hasNext()) {
            gs.addInfoMessage("No Asset assigned to user");
        } else {
            while (ast.next()) {
                var ipandmachinename = {
                    "machine_name": ast.name.getValue(),
                    "ip_address": ast.ip_address.getValue()
                };
            }
            return JSON.stringify(ipandmachinename);
        }
    },
 
client script: 
Type:OnChange
Variable name: caller
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var caller = g_form.getValue('caller_id');

  var ga = new GlideAjax("machineDetails");
    ga.addParam("sysparm_name""getIPandMachineName");
    ga.addParam("sysparm_user",newValue);
    ga.getXML(setalert);

function setalert(response){
    var answer = response.responseXML.documentElement.getAttribute("answer");
    alert(answer);
    g_form.setValue('machine_name', answer);
    g_form.setValue('ip_address', answer);
    }
}
 
1 ACCEPTED SOLUTION

Jyoti Jadhav9
Tera Guru

Hi @Community Alums ,

 

Please refer to the below script and make the change in query condition as per your requirement:

ScriptInclude:

var machineDetails = Class.create();
machineDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getIPandMachineName: function() {
        var note = "";
        //var machinename = '';
        var req = this.getParameter("sysparm_user");
        var ast = new GlideRecord("cmdb_ci_hardware");
       //ast.addQuery("sys_class_name", "6f2bacd8dbd19450655c5bd05b9619f9");
        //ast.addQuery("assigned_to", req);
        //ast.addQuery("install_status", "1");
        //ast.addQuery("sys_id", srn);
        ast.addEncodedQuery("sys_class_name=cmdb_ci_computer^assigned_to="+req+"^install_status=1");
        ast.query();
        if (!ast.hasNext()) {
            gs.addInfoMessage("No Asset assigned to user");
        } else {
            while (ast.next()) {
                var ipandmachinename = {};
                ipandmachinename.machine_name = ast.name.getValue();
                ipandmachinename.ip_address = ast.ip_address.getValue();                
            }
            return JSON.stringify(ipandmachinename);
        }
    },

    type: 'machineDetails'
});

=================================================================================

Client Script:

Type:OnChange
Variable name: caller
function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

   //Type appropriate comment here, and begin script below
   var caller = g_form.getValue('caller_id');

  var ga = new GlideAjax("machineDetails");
    ga.addParam("sysparm_name", "getIPandMachineName");
    ga.addParam("sysparm_user",newValue);
    ga.getXML(setalert);

function setalert(response){
    var answer = response.responseXML.documentElement.getAttribute("answer");
    var answer1 = JSON.parse(answer);
    g_form.setValue('machine_name', answer1.machine_name);
    g_form.setValue('ip_address', answer1.ip_address);
    }
}
 
O/P:
Jyoti4_0-1707229160453.png     Jyoti4_2-1707229245857.png

 

 

Please hit the like button if my suggestion has helped you in any way.
Please mark correct if my response has solved your query.

 

Thanks & Regards

Jyoti Jadhav

 

View solution in original post

14 REPLIES 14

Ankur Bawiskar
Tera Patron
Tera Patron

@Community Alums 

what if user has multiple machine and IP?

Your field is string type

Are you saying you want to populate those values comma separated?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Community Alums
Not applicable

@Ankur Bawiskar user is assigned only 1 machine. No, the machine name and ip address must be populated as shown below 

 

Carol6_0-1707227127098.png

 

@Community Alums 

what debugging did you do?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Unique45
Mega Sage

Hello @Community Alums,

In script Include add query :

ast.addQuery("sys_class_name", "cmdb_ci_computer");

 Instead of:

ast.addQuery("sys_class_name", "6f2bacd8dbd19450655c5bd05b9619f9");

 

Please mark correct/helpful if this helps you!

Jyoti Jadhav9
Tera Guru

Hi @Community Alums ,

 

Please refer to the below script and make the change in query condition as per your requirement:

ScriptInclude:

var machineDetails = Class.create();
machineDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getIPandMachineName: function() {
        var note = "";
        //var machinename = '';
        var req = this.getParameter("sysparm_user");
        var ast = new GlideRecord("cmdb_ci_hardware");
       //ast.addQuery("sys_class_name", "6f2bacd8dbd19450655c5bd05b9619f9");
        //ast.addQuery("assigned_to", req);
        //ast.addQuery("install_status", "1");
        //ast.addQuery("sys_id", srn);
        ast.addEncodedQuery("sys_class_name=cmdb_ci_computer^assigned_to="+req+"^install_status=1");
        ast.query();
        if (!ast.hasNext()) {
            gs.addInfoMessage("No Asset assigned to user");
        } else {
            while (ast.next()) {
                var ipandmachinename = {};
                ipandmachinename.machine_name = ast.name.getValue();
                ipandmachinename.ip_address = ast.ip_address.getValue();                
            }
            return JSON.stringify(ipandmachinename);
        }
    },

    type: 'machineDetails'
});

=================================================================================

Client Script:

Type:OnChange
Variable name: caller
function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

   //Type appropriate comment here, and begin script below
   var caller = g_form.getValue('caller_id');

  var ga = new GlideAjax("machineDetails");
    ga.addParam("sysparm_name", "getIPandMachineName");
    ga.addParam("sysparm_user",newValue);
    ga.getXML(setalert);

function setalert(response){
    var answer = response.responseXML.documentElement.getAttribute("answer");
    var answer1 = JSON.parse(answer);
    g_form.setValue('machine_name', answer1.machine_name);
    g_form.setValue('ip_address', answer1.ip_address);
    }
}
 
O/P:
Jyoti4_0-1707229160453.png     Jyoti4_2-1707229245857.png

 

 

Please hit the like button if my suggestion has helped you in any way.
Please mark correct if my response has solved your query.

 

Thanks & Regards

Jyoti Jadhav