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 must point out that this method requires each variable to a call to the server to get the results, making it a bit inefficient. It's possible to do this with one call using GlideAjax in an onLoad script to get them all.


Hi Chuck,



That's precisely why I changed the implementation to GlideAjax + onLoad script (in my last response to Dilini today). I read somewhere in the community a comment from you about the performance impact in the script against Default Value and decided to go the Ajax way.



Thank you


Tiyasa


Community Alums
Not applicable

This worked for me with email address. Much simpler than adding a Script Include and Client script. Thanks this was super helpful.

dilini
Giga Expert

Hi Tiyasa,


Yes. Those work for me. When you are creating a variable there is a field "Default value", past the below code Default value box.


Screen Shot 2017-04-04 at 1.31.21 PM.png


I realized that there were no data in some fields . It works perfectly.



Thank you very much.