- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-06-2015 07:45 AM
How can I get a value from a Reference field to populate a String field via an OnChange client script (for a Catalog Item)? Right now, all I can get is the Sys_ID. The field needs to get populated initially with the cost_center field, based on the logged in under, but after that it may need to be manually changed (to a non-reference value).
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-08-2015 05:53 AM
This will work
Script Include:
var UserDetailsAjax = Class.create();
UserDetailsAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getCostCenterDetails: function()
{
var getUserCostDetails = new GlideRecord('sys_user');
if(getUserCostDetails.get(this.getParameter('sysparm_requested_for')))
{
return getUserCostDetails.cost_center.getDisplayValue();
}
}
});
Client script
var getCost = new GlideAjax('UserDetailsAjax');
getCost.addParam('sysparm_name','getCostCenterDetails');
getCost.addParam('sysparm_requested_for',newValue);
getCost.getXML(setCostCenter);
function setCostCenter(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('cost_center', answer);
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-07-2015 07:27 AM
Actually screenshot of the catalog with the info of which field's information needs to be populated in which string field ? The reference field is referring which table ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-07-2015 08:12 AM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-08-2015 12:47 AM
You cannot directly pull the cost center data from user record.. You need a glideajax for this ....
Script Include
Name : UserDetailsAjax
Client Callable : Checked
Script:
var UserDetailsAjax = Class.create();
UserDetailsAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getCostCenterDetails: function()
{
var getUserCostDetails = new GlideRecord('sys_user');
if(getUserCostDetails.get(gs.getUserID()))
{
return getUserCostDetails.cost_center.getDisplayValue();
}
}
});
Onchange Client Script for requested for field :
var getCost = new GlideAjax('UserDetailsAjax');
getCost.addParam('sysparm_name','getCostCenterDetails');
getCost.getXML(setCostCenter);
function setCostCenter(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('cost_center', answer);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-08-2015 05:31 AM
We're nearly there. After a little tweaking (I was getting some script errors for the OnChange as you had posted it), they Cost Center display value is pulled in, BUT it's not updating when the field value changes.
Here is the current OnChange script:
function onChange(control, oldValue, newValue, isLoading) {
if(newValue != ""){
/* var reqFor2 = g_form.getReference('requested_for');
g_form.setValue('cost_center', reqFor2.cost_center);
}
}*/
var getCost = new GlideAjax('UserDetailsAjax');
getCost.addParam('sysparm_name','getCostCenterDetails');
getCost.getXML(setCostCenter);
}
function setCostCenter(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('cost_center', answer);
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-08-2015 05:53 AM
This will work
Script Include:
var UserDetailsAjax = Class.create();
UserDetailsAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getCostCenterDetails: function()
{
var getUserCostDetails = new GlideRecord('sys_user');
if(getUserCostDetails.get(this.getParameter('sysparm_requested_for')))
{
return getUserCostDetails.cost_center.getDisplayValue();
}
}
});
Client script
var getCost = new GlideAjax('UserDetailsAjax');
getCost.addParam('sysparm_name','getCostCenterDetails');
getCost.addParam('sysparm_requested_for',newValue);
getCost.getXML(setCostCenter);
function setCostCenter(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('cost_center', answer);
}