Filter List view with BR
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-19-2025 05:56 PM
Hello Community my something is wrong with my filter i am trying to filter HR profile depending on departement code comming from another table can someone tell what is wrong with the code
(function executeRule(current, previous /*null when async*/ ) {
var userId = gs.getUserID();
// if (!userId) {
// return;
// }
// Retrieve department and company IDs from u_hr_scope_mgmt
var scopeGR = new GlideRecord('u_hr_scope_mgmt');
scopeGR.addQuery('u_user', userId);
scopeGR.query();
var departmentIds = [];
var companyIds = [];
while (scopeGR.next()) {
// Extract department (u_services)
if (!gs.nil(scopeGR.u_services)) {
var deptList = scopeGR.u_services.toString().split(',');
for (var i = 0; i < deptList.length; i++) {
var deptId = deptList[i].trim();
if (deptId && departmentIds.indexOf(deptId) === -1) {
departmentIds.push(deptId);
}
}
}
// Extract company (u_legal_entities)
if (!gs.nil(scopeGR.u_legal_entities)) {
var companyList = scopeGR.u_legal_entities.toString().split(',');
for (var j = 0; j < companyList.length; j++) {
var companyId = companyList[j].trim();
if (companyId && companyIds.indexOf(companyId) === -1) {
companyIds.push(companyId);
}
}
}
}
var joinDepartmentIds = departmentIds.join(", ");
var joinCompanyIds = companyIds.join(", ");
// Debugging logs
gs.info("Department IDs: " + joinDepartmentIds);
gs.info("Company IDs: " + joinCompanyIds);
//Apply query filter to HR Profiles
if (departmentIds.length > 0 || companyIds.length > 0) {
// Apply department filter
if (departmentIds.length > 0) {
// current.addEncodedQuery('user.department=411be713c3ac5e107c1d06359901310b');
var departmentArray = joinDepartmentIds.split(','); // Convert string to array
// Loop through remaining department IDs and add OR condition
for (var m = 1; m < departmentArray.length; m++) {
gs.info("department array: " + departmentArray[m]);
current.addQuery('user.department', departmentArray[0].trim()).addOrCondition('user.department', departmentArray[m].trim());
gs.addInfoMessage( current.addQuery('user.department', departmentArray[0].trim()).addOrCondition('user.department', departmentArray[m].trim()))
}
}
// Apply company filter
// if (companyIds.length > 0) {
// current.addQuery('company.id', 'IN', joinCompanyIds);
// }
} else {
// If the user has no department or company in scope, restrict access
current.setAbortAction(true);
}
})(current, previous);
1 REPLY 1
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-19-2025 05:57 PM
this is the part of the code not wich is not working
//Apply query filter to HR Profiles
if (departmentIds.length > 0 || companyIds.length > 0) {
// Apply department filter
if (departmentIds.length > 0) {
// current.addEncodedQuery('user.department=411be713c3ac5e107c1d06359901310b');
var departmentArray = joinDepartmentIds.split(','); // Convert string to array
// Loop through remaining department IDs and add OR condition
for (var m = 1; m < departmentArray.length; m++) {
gs.info("department array: " + departmentArray[m]);
current.addQuery('user.department', departmentArray[0].trim()).addOrCondition('user.department', departmentArray[m].trim());
gs.addInfoMessage( current.addQuery('user.department', departmentArray[0].trim()).addOrCondition('user.department', departmentArray[m].trim()))
}
}