Filter list view using array
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2017 01:12 PM
Hi guys,
I have a function that builds an array and pass values to the list view. But for some reason filtering using the array values doesn't work. Would you know what could I be missing?
Code:
function getMyReqApprovals() {
var u = gs.getUserID();
var answer = new Array();
var lkpKey;
var i = 0;
var answer = new Array();
var i = 0;
var g = new GlideRecord("sys_user_delegate");
g.addQuery("delegate", u);
g.addQuery("approvals", "true");
g.addQuery("starts", "<=", gs.daysAgo(0));
g.addQuery("ends", ">=", gs.daysAgo(0));
// g.addQuery("u_delegate_type", 'fbf96cb437d2f680af725a9543990e0f');
g.query();
var approvers = [];
var myapprovers = [];
while( g.next()){
//answer[i++] = new String(g.user, g.u_delegate_type);
gs.log('g.user1=' + g.user + ' delegate1=' + g.u_delegate_type );
answer[i++] = getApprovers(approvers,g.user, g.u_delegate_type);
}
gs.log('myapprovers=' + answer);
return answer;
//return answer;
}
function getApprovers(approvers,approverSysId,delType){
var answer = new Array();
var i = 0;
var approver;
var app = new GlideRecord('sysapproval_approver');
app.addQuery('approver', approverSysId);
app.addQuery('u_delegate_type', delType);
app.query();
gs.log('rows=' + app.getRowCount());
while( app.next())
answer[i++] = new String(app.sysapproval);
gs.log('sysids='+answer);
return answer;
}
This is what the function getMyReqApprovals is printing in sys logs:
myapprovers=,905e99a20f4f6a00577b716ce1050ecd,b18ea49c6fea2640c024db141c3ee437,d299fa0c37dab680af725a9543990e51,357d4fd037deb680af725a9543990e31,a96013d56f1f2a00c024db141c3ee49e,40efeff70f56e640577b716ce1050e03
Any help is greatly appreciated.
Thanks
Regina
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2017 01:31 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2017 03:51 PM
Hi Regina,
Is the Script Include 'Client callable'?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-21-2017 05:03 AM
Sorry, I was in an offsite all day yesterday Regina. I find that leading comma a bit "off". Try this. It uses a modern approach to the array management and leverages getValue() as much as I can find instead of converting objects to strings or direct property access.
Consider running this and testing it in scripts background.
function getMyReqApprovals() {
var u = gs.getUserID();
var answer = [];
var lkpKey;
var i = 0;
var g = new GlideRecord("sys_user_delegate");
g.addQuery("delegate", u);
g.addQuery("approvals", "true");
g.addQuery("starts", "<=", gs.daysAgo(0));
g.addQuery("ends", ">=", gs.daysAgo(0));
// g.addQuery("u_delegate_type", 'fbf96cb437d2f680af725a9543990e0f');
g.query();
var approvers = [];
var myapprovers = [];
while( g.next()){
gs.log('g.user1=' + g.getValue('user') + ' delegate1=' + g.getValue('u_delegate_type') );
answer.push(getApprovers(approvers, g.getValue('user'), g.getValue('u_delegate_type')));
}
gs.log('myapprovers=' + answer.join(','));
return answer.join(',');
}
function getApprovers(approvers, approverSysId, delType){
var answer = [];
var i = 0;
var approver;
var app = new GlideRecord('sysapproval_approver');
app.addQuery('approver', approverSysId);
app.addQuery('u_delegate_type', delType);
app.query();
gs.log('rows=' + app.getRowCount());
while( app.next())
answer.push(app.getValue('sysapproval'));
gs.log('sysids='+answer.join(','));
return answer.join(',');
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2017 11:12 PM
Hi veena the functions are in a Business Rules