- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-14-2018 01:19 PM
I have a simple onChange Catalog Client Script (the applies to field is "Variable Set"). This is setting the phone number
Variable set: xxxx
Variable Name: requested_for
var caller = g_form.getReference('requested_for', setupUsersPhones);
function setupUsersPhones(caller) {
if (caller){
g_form.setValue('contact_number', caller.phone);
} }
requested_for and contact_number are both variables in the variable set. THIS CATALOG CLIENT SCRIPT WORKS FINE.
Then I have another simple onChange Catalog Client Script (the applies to field is "Catalog Item"). This is setting the company. Company is not part of the variable set.
Catalog Item: xxxxxx
Variable name: xxxxxx -> requested_for (xxx is the variable set name)
var caller = g_form.getReference('requested_for', setCompany);
alert(caller);
function setCompany(caller) {
if (caller){
g_form.setDisplayValue('slt_company', caller.company);
}
}
alert(caller); comes back undefined. And the company is not changing either.
Do I need to do something different in my script to "dot walk" it (for lack of a better term) to the variable set?
Lisa
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-08-2018 01:04 PM
Using 1 server call is certainly best in terms of performance.
But, if you want to squeeze a bit more out of the script, you should return both the sys_id and the display value for company so when you use g_form.setValue(), you can pass the display value as a third parameter.
g_form.setValue('ref_company', answer.company_sys_id, answer.company_name);
Without the display value, the platform has to go back to the server to find out what the display value is in order to show it.
Are u_branch and u_division reference variables as well? If so, should do the same with them as well.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-05-2018 11:57 PM
Did you find a solution to your issue?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-08-2018 12:46 PM
I actually just decided to go the AJAX way and it started to work. I collected more data as well. Again company is not part of the variable set, so I'm not sure why it wasn't working with a simple catalog client script.
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var fields = "u_branch,u_division,company"; //comma seperated list of fields to return
var ga = new GlideAjax('XXDYNAMICAJAX'); // DHSAJAX is the script include class
var caller = newValue;
ga.addParam('sysparm_name','getRecordValues'); // getRecordValues is the script include method we are calling.
ga.addParam('sysparm_table', 'sys_user'); // setting table to be passed to script include.
ga.addParam('sysparm_fields', fields); // Set parameter sysparm_fields to user values you want
ga.addParam('search_value', caller); //Returns the sys_id of the onChange field.
ga.getXML(ReturnRecords);
// the callback function for returning the result from the server-side code
function ReturnRecords(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
answer = JSON.parse(answer); //Transform the JSON string to an object
g_form.setValue('ref_branch', answer.u_branch);
g_form.setValue('ref_division', answer.u_division);
g_form.setValue('ref_company', answer.company);
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-08-2018 01:04 PM
Using 1 server call is certainly best in terms of performance.
But, if you want to squeeze a bit more out of the script, you should return both the sys_id and the display value for company so when you use g_form.setValue(), you can pass the display value as a third parameter.
g_form.setValue('ref_company', answer.company_sys_id, answer.company_name);
Without the display value, the platform has to go back to the server to find out what the display value is in order to show it.
Are u_branch and u_division reference variables as well? If so, should do the same with them as well.