The Now Platform® Washington DC release is live. Watch now!

Help
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Trying to query list collector field on Incident form

alhicks
Tera Guru

I'm trying to change our Assignment Based workload script to query a list collector field instead of our select box field.   Tried several times (script below) but it's not working...:(

var assignTo = getLowestUser();

//gs.addInfoMessage("assigning to is " + assignTo);

current.assigned_to = assignTo;

function getLowestUser() {

var userList = new Array();

var cg = new GlideRecord('sys_user_grmember');

cg.addQuery('group', current.assignment_group);

if (current.assignment_group.getDisplayValue() == 'SD - Collaboration/Mobile') {

//cg.addQuery('user.u_service_desk_workload', 'SD-Collaboration/Mobile');     HERE'S THE PREVIOUS DROP DOWN SELECT FIELD

NOW TRYING TO QUERY A LIST FIELD.   IF THE LIST COLLECTOR CONTAINS THIS ASSIGNMENT GROUP.

//cg.addQuery('user.u_service_dsk_workload', 'LIKE', '591f507cf07d4d0c0f323fc297cb7d10');  

//cg.addOrCondition('user.u_service_dsk_workload', 'CONTAINS', '591f507cf07d4d0c0f323fc297cb7d10');  

//cg.addQuery(user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10") >-1);

cg.query();

while(cg.next()) {

var tech = cg.user.toString();

                                                                  TRIED TO QUERY HERE.

//if (cg.user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10") >-1){

//if (cg.user.u_service_dsk_workload, 'LIKE', '591f507cf07d4d0c0f323fc297cb7d10'){

var cnt = countTickets(tech);

//gs.addInfoMessage("Tech counts " + cg.user.name + ' ' + cnt + " " + tech);

userList.push( { sys_id: tech, name: cg.user.name, count: cnt } );

}

for(var i=0; i < userList.length; i++) {

//gs.addInfoMessage(userList.sys_id + " " + userList.name + " " + userList.count);

}

userList.sort(function(a, b) {

//gs.addInfoMessage("Sorting: " + a.sys_id + "(" + a.count + "); " + b.sys_id + "(" + a.count + ")");

return a.count - b.count; });

if (userList.length <= 0)

return "";

return userList[0].sys_id;

}

function countTickets(tech){

var ct = new GlideRecord('incident');

ct.addQuery('assigned_to',tech);

ct.addQuery('active',true);

ct.query();

return ct.getRowCount();

}

}

1 ACCEPTED SOLUTION

Hello Andrea,


I think the problem (if I'm understanding the desired outcome correctly) might lie in both these lines:


cg.addQuery('user.u_service_dsk_workload', 'CONTAINS',   '591f507cf07d4d0c0f323fc297cb7d10');



cg.addQuery(user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10") > -1);



Am I understanding correctly that you only want members that are just in this group?   If so, I think the first query might just want to do a straight equals comparison by removing the 'CONTAINS' parameter, so just cg.addQuery('user.u_service_dsk_workload',   '591f507cf07d4d0c0f323fc297cb7d10');



It looks like the 2nd query is doing the same thing as the first from what I can see, so it could probably just be removed.   Also, if I'm incorrect in my understanding and you do want to you use the 'CONTAINS' parameter, I might still remove the 2nd line as it seems a bit redundant.   I also think for the 2nd line if you do want to use it, you would want to split that comparison out into 3 comparison parameters.   For instance:   cg.addQuery(user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10"), '>', -1);



Let me know if trying either of these changes produces the desired results.


View solution in original post

17 REPLIES 17

uluerje
Mega Expert

Try this:


cg.addQuery('user.sys_user.u_service_dsk_workload', 'IN',   '591f507cf07d4d0c0f323fc297cb7d10');


Thank you for the quick reply, that didn't seem to work either.   Here's a pic of my old field and new field.


find_real_file.png



var assignTo = getLowestUser();


//gs.addInfoMessage("assigning to is " + assignTo);


current.assigned_to = assignTo;



function getLowestUser() {


var userList = new Array();


var cg = new GlideRecord('sys_user_grmember');


cg.addQuery('group', current.assignment_group);


if (current.assignment_group.getDisplayValue() == 'SD - Collaboration/Mobile') {


//OLD FIELD


//cg.addQuery('user.u_service_desk_workload', 'SD-Collaboration/Mobile');


//NEW FIELD


cg.addQuery('user.u_service_dsk_workload', 'IN',   '591f507cf07d4d0c0f323fc297cb7d10');


//cg.addQuery('user.sys_user.u_service_dsk_workload', 'IN',   '591f507cf07d4d0c0f323fc297cb7d10');


//cg.addQuery('user.u_service_dsk_workload', 'LIKE', '591f507cf07d4d0c0f323fc297cb7d10');


//cg.addOrCondition('user.u_service_dsk_workload', 'CONTAINS', '591f507cf07d4d0c0f323fc297cb7d10');


//cg.addQuery(user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10") >-1);


cg.query();


while(cg.next()) {


var tech = cg.user.toString();


//if (cg.user.u_absent != true){


//if (cg.user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10") >-1){


//if (cg.user.u_service_dsk_workload, 'LIKE', '591f507cf07d4d0c0f323fc297cb7d10'){


var cnt = countTickets(tech);


//gs.addInfoMessage("Tech counts " + cg.user.name + ' ' + cnt + " " + tech);


userList.push( { sys_id: tech, name: cg.user.name, count: cnt } );


}


for(var i=0; i < userList.length; i++) {


//gs.addInfoMessage(userList.sys_id + " " + userList.name + " " + userList.count);


}


userList.sort(function(a, b) {


//gs.addInfoMessage("Sorting: " + a.sys_id + "(" + a.count + "); " + b.sys_id + "(" + a.count + ")");


return a.count - b.count; });



if (userList.length <= 0)


return "";


return userList[0].sys_id;


}



function countTickets(tech){


var ct = new GlideRecord('incident');


ct.addQuery('assigned_to',tech);


ct.addQuery('active',true);


ct.query();


return ct.getRowCount();


}


}


Ok, what about this:



var queryString = "user.u_service_dsk_workloadLIKE591f507cf07d4d0c0f323fc297cb7d10";


var cg = new GlideRecord('sys_user_grmember');


cg.addQuery('group', current.assignment_group);


cg.addEncodedQuery(queryString);


Not sure what the problem is, this one didn't work either..:(