Auto populate field with multiple variables
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2025 09:16 AM
Hi all.
I need to auto-populate a field on a catalog item. I have a vendor field that references a 'Company' table and want the address from that table to auto-populate. When I try to do this, I can only select one of the attributes of the address....street, city, state, or zip.
How can I select the address in it's entirety vice only one of the attributes?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2025 10:36 AM
Since the data doesn't exist in the Company table as a single field, you need to retrieve multiple fields into a multi-line text variable with "\n" to denote a new line. You can do this with Get Reference or Glide Ajax , both very useful tools to have in your belt. Give the script(s) a shot and if you get stuck post them here using the insert code </> icon and we'll get it sorted.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2025 06:28 PM
Hi @davidvetter ,
If you're using Utah or later, the built-in Auto‑populate feature within variable is the simplest way. For earlier versions or more complex logic, use a Script Include with GlideAjax and an onChange Client Script. Reference qualifiers don’t auto-populate values, they only filter available options.
Try this once and let me know. If you find this helpful, please accept this as a solution and hit the helpful button..
Kaushal Kumar Jha - ServiceNow Consultant - Lets connect on Linkedin: https://www.linkedin.com/in/kaushalkrjha/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2025 06:40 PM - edited 08-05-2025 06:42 PM
hi @davidvetter
May you try an onChange catalog script with glideAjax
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
// GlideAjax call to get address info
var ga = new GlideAjax('GetVendorAddress');
ga.addParam('sysparm_name', 'getAddress');
ga.addParam('sysparm_vendor_id', newValue);
ga.getXMLAnswer(function(response) {
var addressData = JSON.parse(response);
// Set values to the other variables
g_form.setValue('address', addressData.address);
g_form.setValue('city', addressData.city);
g_form.setValue('state', addressData.state);
g_form.setValue('zip', addressData.zip);
});
}
Script include
// Script Include: GetVendorAddress
// Accessible from Client: true
var GetVendorAddress = Class.create();
GetVendorAddress.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getAddress: function() {
var vendorId = this.getParameter('sysparm_vendor_id');
var company = new GlideRecord('core_company');
if (company.get(vendorId)) {
var result = {
address: company.getValue('address'),
city: company.getValue('city'),
state: company.getValue('state'),
zip: company.getValue('zip')
};
return JSON.stringify(result);
}
return JSON.stringify({
address: '',
city: '',
state: '',
zip: ''
});
}
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2025 08:57 PM
2 approaches
1) either have individual variables to hold street, city, state, zip etc and then use Auto populate feature to populate those based on Company variable
Auto-populate a variable based on a reference type variable (Utah)
OR
2) have a multi-line text variable and use GlideAjax or getReference callback to populate all the details in single variable, like this
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading) {
return;
}
if (newValue == '') {
g_form.clearValue('detailsVariableName'); // your variable name here
}
var ref = g_form.getReference('companyVariableName', callBackMethod); // your variable name
}
function callBackMethod(ref) {
var completeDetails = 'Street:' + ref.street + '\n' + 'City:' + ref.city + '\n' + 'State:' + ref.state + '\n' + 'Zip:' + ref.zip;
g_form.setValue('detailsVariableName', completeDetails); // your variable name here
}
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader