Auto populate user information on Load

tiyasa
Giga Expert

Hello everyone,

So I need to auto fill User information based on the current logged in User. I did search the community and found loads of suggestions but mostly

when a user is selected and the related other fields are populated.

I tried to set the following values to Default for the variables but most did not work

  1. Requested For : javascript:gs.getUserName(); Worked fine.
  2. Phone Number : javascript:gs.getMobileNumber();
  3. Company : javascript:gs.getUser().getCompanyID();
  4. Location : javascript:gs.getUser().getLocation(); Returns a value but per the user record of the current logged in user, the value returned is Country not Location.
  5. Department :
  6. Division :
  7. BU:
  8. CU:
  9. Cost Center :

find_real_file.png

Additionally, I did try to create a catalog client script on load and fetch the object of the user record, but it doesn't work too.

Thank you ,

Tiyasa

1 ACCEPTED SOLUTION

shloke04
Kilo Patron

Hi,



For Auto population of the above defined Variables you can write an Script Include and call the same Script Include in an OnLoad Catalog Client Script as mentioned below:



Script Include:



var requestor_details = Class.create();


requestor_details.prototype = Object.extendsObject(AbstractAjaxProcessor, {



  requestor_info: function() {


  var result = this.newItem("result");


  var logged_user = gs.getUserID();


  var user_detail = new GlideRecord('sys_user');


  user_detail.addQuery('sys_id',logged_user);


  user_detail.query();


  while(user_detail.next())


  {


  result.setAttribute("user",user_detail.sys_id);


  result.setAttribute("phone", user_detail.phone);


  result.setAttribute("email",user_detail.email);


  result.setAttribute("location",user_detail.location);



  }


  },



  type: 'requestor_details'


});



find_real_file.png



2) Then you can write an On Load Catalog Client Script wither on your Catalog Item or on the Variable Set to have the variables populated as shown below:



Script:



function onLoad()


{


  var ga = new GlideAjax("requestor_details");


  ga.addParam("sysparm_name","requestor_info");


  ga.getXML(ajaxResponse);


  function ajaxResponse(serverResponse) {


  var result = serverResponse.responseXML.getElementsByTagName("result");


  var phone = result[0].getAttribute("phone");


  var user = result[0].getAttribute("user");


  var email = result[0].getAttribute("email");


  var loc = result[0].getAttribute("location");


  g_form.setValue('requestor_phone',phone);


  g_form.setValue('requestor_name',user);


  g_form.setValue('Location_user',loc);


  }


}



find_real_file.png



Replace your Variable Name appropriately in the Set Value Conditions say for example in place of the variable "Location_user" with your Location Variable.



In a Similar Way you can try for other Variables also.



Hope this helps.Mark the answer as correct/helpful based on impact.



Regards,


Shloke


Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

View solution in original post

26 REPLIES 26

I tried using this and it worked like a gem.

 

But  I have a condition where the "requested by" and "requested for" will be different, Then how will be the case of getting the "requested for" country details(not the location) using this scenario.

 

Thank you in advance

dilini
Giga Expert

Hi Chuck,


Thank you for directing me to use more efficient way. I am also planing to write server side script instead of client side.


Thank you!


Dilini