How to filter reference field records based on another fields

chanikya
Mega Sage

Hi All,

Please help me here : as of now we are displaying reference field values based on another field . but Now i want to filter Data reference fields records based on two fields from Form.

Script include :

var filterTask1 = Class.create();
filterTask1.prototype = {
initialize: function() {},

getProjects: function(portfolio) {

var prj = [];
var gr = new GlideRecord("task");
gr.addEncodedQuery("sys_class_name=pm_project^ORsys_class_name=dmn_demand");
gr.addEncodedQuery('state=2^ORstate=10^ORstate=8');
gr.addEncodedQuery('ref_pm_project.primary_portfolio=' + portfolio + '^ORref_dmn_demand.portfolio=' + portfolio);
gr.query();
while (gr.next()) {
prj.push(gr.sys_id.toString());
}
var strId = prj.join(',');
return 'sys_idIN' + strId;

},

type: 'filterTask1'
};

Reference Qualifier : javascript: new filterTask1().getProjects(current.u_portfolio);

find_real_file.png

 

 

 

Issue : Now functionality need to work based on  two fields , 1. Category 2. Portfolio

kindly let me know how to fix this one.

find_real_file.png

 

1 ACCEPTED SOLUTION

Pranav Bhagat
Kilo Sage

You can add the two fields in the function

example

Script include :

var filterTask1 = Class.create();
filterTask1.prototype = {
initialize: function() {},

getProjects: function(portfolio,task) {

var prj = [];
var gr = new GlideRecord("task");
gr.addEncodedQuery("sys_class_name=pm_project^ORsys_class_name=dmn_demand");
gr.addEncodedQuery('state=2^ORstate=10^ORstate=8');
gr.addEncodedQuery('ref_pm_project.primary_portfolio=' + portfolio + '^ORref_dmn_demand.portfolio=' + portfolio +'^parent=' +task); // add your logic
gr.query();
while (gr.next()) {
prj.push(gr.sys_id.toString());
}
var strId = prj.join(',');
return 'sys_idIN' + strId;

},

type: 'filterTask1'
};

Reference Qualifier : javascript: new filterTask1().getProjects(current.u_portfolio,current.sys_id);

View solution in original post

2 REPLIES 2

Pranav Bhagat
Kilo Sage

You can add the two fields in the function

example

Script include :

var filterTask1 = Class.create();
filterTask1.prototype = {
initialize: function() {},

getProjects: function(portfolio,task) {

var prj = [];
var gr = new GlideRecord("task");
gr.addEncodedQuery("sys_class_name=pm_project^ORsys_class_name=dmn_demand");
gr.addEncodedQuery('state=2^ORstate=10^ORstate=8');
gr.addEncodedQuery('ref_pm_project.primary_portfolio=' + portfolio + '^ORref_dmn_demand.portfolio=' + portfolio +'^parent=' +task); // add your logic
gr.query();
while (gr.next()) {
prj.push(gr.sys_id.toString());
}
var strId = prj.join(',');
return 'sys_idIN' + strId;

},

type: 'filterTask1'
};

Reference Qualifier : javascript: new filterTask1().getProjects(current.u_portfolio,current.sys_id);

Hi Pranav,

thanks for the Logic. i have added two fields .

now data is coming correctly

Thanks again.