Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

catalog client script for manager

venkateshdhanap
Tera Contributor

I have variable name, User(user_id) and Line Manager(line_manager). Line manager should populated based on the user selected. Please suggest the catalog client script for this.

1 ACCEPTED SOLUTION

I would suggest use script include,



Use below code


Script include


var userDetails   = Class.create();


userDetails .prototype = Object.extendsObject(AbstractAjaxProcessor, {



getManager: function() {


  var gr=new GlideRecord("sys_user");


  gr.addQuery("sys_id",this.getParameter('sysparam_id'));


  gr.query();


  gr.next();


  if(gr.manager!=''){


  return gr.manager.name;


  }


  else


  {


  return "blank";


  }


    },


      type: 'userDetails '


});


find_real_file.png


Client Script


function onChange(control, oldValue, newValue, isLoading) {


    if (isLoading || newValue == '') {


          return;


    }


var ga = new GlideAjax('userDetails');


ga.addParam('sysparm_name','getManager'); // pass   script include function


ga.addParam('sysparam_id',newValue);


ga.getXML(Process);


 


}




function Process(response) {


    var answer = response.responseXML.documentElement.getAttribute("answer");


  alert(answer);


    g_form.setValue("man",answer); // man should be line manager variable name


    }



find_real_file.png


Regards
Harish

View solution in original post

9 REPLIES 9

amlanpal
Kilo Sage

Hi Venkatesh,



Please write an onChange Catalog Client Script on change of the variable User as of the below screenshot. I believe you want to populate the selected User's Manager in the 'Line Manager' variable. Also I believe that both the variables are Reference type and referring User (sys_user) table.


find_real_file.png



I hope this helps.Please mark correct/helpful based on impact


I tried this code but manager name not changing while changing the user name. Both variables referring (sys_user) table only.



find_real_file.png


find_real_file.png


Sudhrithi is Venkatesh's Manager. When changing to A islam manager name remains same but islam's manger is not Sudhrithi(Islam's manager is Durai).


find_real_file.png


Hi Venkatesh,



Please try below code if it helps:



function onChange(control, oldValue, newValue, isLoading) {


  if (isLoading || newValue == '') {


  var cos=g_form.getReference('user_id');


    g_form.setValue('line_manager',cos.manager);


  return;


  }


  var cos=g_form.getReference('user_id');


  g_form.setValue('line_manager',cos.manager);


  //Type appropriate comment here, and begin script below


}



This script is running perfectly for me with same scenario.



find_real_file.png



Regards,


Anjali


Try this script,



function onChange(control, oldValue, newValue, isLoading) {


  if (isLoading){


  return;


}


if (newValue==''){


  g_form.setValue('line_manager','');


}


else{


  var user =g_form.getReference('user_id',fetchManager);


}


}


function fetchManager(){


  g_form.setValue('line_manager',user.manager);


}