Filter list view using array

reginabautista
Kilo Sage

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?

find_real_file.png

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

6 REPLIES 6

reginabautista
Kilo Sage

bump ctomasi abhinay any ideas?


Hi Regina,



Is the Script Include 'Client callable'?


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(',');



}


reginabautista
Kilo Sage

Hi veena the functions are in a Business Rules