Client Script

kirankr2061
Tera Contributor

client script written onchange of - account owner variable - list collector
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading) {
return;
}

if (newValue == '') {
var myListCollector = g_list.get('ten_cloud_account_name');
myListCollector.reset();

}

var ga = new GlideAjax('UtilsAjax');
ga.addParam('sysparm_name', 'isPrimaryOwner');
ga.addParam('sysparm_account_owner', newValue);
ga.getXMLAnswer(function(response) {
var count = parseInt(response);
if (count <= 0) {
g_form.clearValue('ten_cloud_account_owner');
g_form.showFieldMsg('ten_cloud_account_owner', 'Please select the proper cloud account owner.', 'error');
} else {
populateCloudAccounts(newValue);
}

});

function populateCloudAccounts(ownerId) {
var ga = new GlideAjax('UtilsAjax');
ga.addParam('sysparm_name', 'getCloudAccountsByOwner');
ga.addParam('sysparm_account_owner', ownerId);
ga.getXMLAnswer(function(response) {
if (newValue != '') {
var listCollector = g_list.get('ten_cloud_account_name');
if (listCollector) {
listCollector.reset();
listCollector.setQuery(response + '^nameISNOTEMPTY');
}
} else {
g_form.clearValue('ten_cloud_account_name');
}
});
}
}

client script written omchange of cloud account name variable list collector
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading) {
return;
}
if (newValue != '') {
var ga = new GlideAjax('UtilsAjax');
ga.addParam('sysparm_name', 'populateOwner');
ga.addParam('sysparm_cloudid', newValue);
ga.getXMLAnswer(function(response) {
var ans = response;
g_form.setValue('ten_cloud_account_owner', ans);
g_form.setReadOnly('ten_cloud_account_owner');
});
}
}

now what I am doing is when an user selects primary account owner from the variable the respective cloud accounts will be filtered in the list
if the user don't know primary owner then he can select the account from cloud account name list collector then the primary owner is auto populated
 if I wanted to select multiple cloud accounts its not allowing me to select its clearing the values in the list
What to do now - suggest any other way or how can I approach now 

1 ACCEPTED SOLUTION

@kirankr2061 

Response to your 1st part below - filtering list collector based on 1st reference variable

then you should use advanced reference qualifier on list collector to show accounts under that person

Something like this

javascript&colon;'ownerField=' + current.variables.firstVariableName;

Also give this in variable attributes

ref_qual_elements=firstVariableName

I didn't get this part -> I dont know account owner If I select the account from list collector it will auto npopulate that owner and the list will only show his accounts -> since 2nd variable will be filtered based on 1st, if 1st itself is empty how 2nd will be filtered. Also 2nd variable is list collector and user can select multiple accounts then which account owner will you populate in the 1st variable

I believe you should discuss the 2nd requirement with your customer.

If my response helped please mark it correct and close the thread so that it benefits future readers. 

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

10 REPLIES 10

Thank You