- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-19-2015 04:22 AM
Hi there,
I'm figuring out the best way to do this..
In my form, I have 2 fields: caller and hospital.
Caller refers to the users table, Hospital refers to the company table.
My goal is: whenever I populate the caller field, the system needs to lookup the hospital of that caller and needs to auto-populate that.
Example: Customer X is part of Hospital X. Customer X is the caller so will be populated in the caller field. The system recognizes that Customer X is part of Hospital X so hospital will be Hospital X.
Hope you guys can help me out!
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-21-2015 06:53 AM
We got it working!
Client script:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue == '') {
return;
}
var ga = new GlideAjax('GetCustomerData');
ga.addParam('sysparm_name','getFieldValue');
ga.addParam('sysparm_field','u_reference_1');
ga.addParam('sysparm_user_id', g_form.getValue('caller'));
ga.getXML(DoSomething);
function DoSomething(response) {
var company = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('company',company);
}
}
Script include:
var GetCustomerData = Class.create();
GetCustomerData.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
getFieldValue: function() {
var user = new GlideRecord('x_medt2_ihs_customers');
user.get(this.getParameter('sysparm_user_id'));
if(! user.sys_id){
return false;
}
return user[this.getParameter('sysparm_field')];
}
});
Thanks everybody for the great help on this!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-19-2015 06:12 AM
also you need to change the caller to caller_id on the g_form.setValue
so g_form.setValue('company', caller.u_reference_1)
should be
g_form.setValue('company', caller_id.u_reference_1)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-19-2015 06:31 AM
function onChange(control, oldValue, newValue, isLoading) {
var caller_id = g_form.getReference('caller', setHospital);
}
function setHospital(caller_id)
{
g_form.setValue('u_hosptial', caller_id.u_reference_1);
}
Doesn't work. Nothing happens.
(Sorry, still new on scripting)

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-19-2015 06:37 AM
Try this...
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var gr = new GlideRecord(<your_caller_table>);
gr.addQuery('caller', newValue);
gr.query();
if(gr.next()){
g_form.setValue('company', gr.u_reference_1);
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-19-2015 06:58 AM
I get this error: onChange script error: ReferenceError: x_medt2_ihs_customers is not defined function (){var o=i(m,arguments);return l.apply(n,o)}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-19-2015 08:19 AM
Hi community!
To populate that field when you are filling the form, you will need a client script on change. This would be the code:
function onChange(control, oldValue, newValue, isLoading) {
var caller = g_form.getReference('caller_id', getHospital); // getHospital is our callback function
}
function getHospital(caller) { //reference is passed into callback as first arguments
g_form.setValue('company',caller.u_hospital) //Im guessing that the column name of the field Hospital on Customer form is u_hopital. Check the dicctionary to be sure!
}
I hope it helps!
Regards,
Antonio.