- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2022 02:03 AM
Hello,
Could yo help on below issue ?
I have to make visible variable in RITM only if below requirements will be passed:
For example, for variable1
If [Variable2]= No AND [Variable3]= No
OR
If [Variable2]= Yes OR [Variable3]= Yes, AND required approval is granted from Single Approval
OR
If [Variable2]= Yes AND [Variable3]= Yes, AND both required approvals are granted (from Single Approval and Group Approval)
I made a below catalog client script which Applies on Requested Items, but it did not work.
function onLoad() {
//Type appropriate comment here, and begin script below
if (variables.variable2== 'No' && variables.variable3== 'No') {
if (variables.variable2== 'Yes' || variables.variable3== 'Yes' && g_scratchpad.isApproved == 'true') {
if (variables.variable2== 'Yes' && variables.variable3== 'Yes' && g_scratchpad.isApproved == 'true') {
g_form.setDisplay(‘variables.variable1’,true);
g_form.setMandatory(‘variables.variable1’,true);
}
}
}
}
Thank you for any help.
Regards,
Lukas
Solved! Go to Solution.
- Labels:
-
Service Catalog
-
Workflow
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2022 03:00 AM
Hi,
so the display BR is on RITM table then this line is wrong;
update this
(function executeRule(current, previous /*null when async*/) {
// Add your code here
var gr = new GlideRecord("sysapproval_approver");
gr.addQuery("sysapproval", current.sys_id);
gr.addQuery("state", "approved");
gr.query();
if (gr.next()) {
g_scratchpad.isApproved = 'true';
}
g_scratchpad.isApproved = 'false';
})(current, previous);
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2022 02:12 AM
You're currently applying an AND operation among these set of conditions by nesting the if blocks. You need to check all these at the same level. You can try this:
function onLoad() {
var conditionA = variables.variable2== 'No' && variables.variable3== 'No';
var conditionB = variables.variable2== 'Yes' || variables.variable3== 'Yes' && g_scratchpad.isApproved == 'true';
var conditionC = variables.variable2== 'Yes' && variables.variable3== 'Yes' && g_scratchpad.isApproved == 'true';
if (conditionA || conditionB || conditionC) {
g_form.setDisplay(‘variables.variable1’,true);
g_form.setMandatory(‘variables.variable1’,true);
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2022 02:37 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2022 02:47 AM
Hi,
I think you are using display business rule on RITM table
share script for that
Also you should use normal client script and not catalog client script
ensure you are comparing correct choice value of No and Yes
Update script as this
function onLoad() {
//Type appropriate comment here, and begin script below
if (g_form.getValue('variables.variable2') == 'No' && g_form.getValue('variables.variable3') == 'No') {
if (g_form.getValue('variables.variable2') == 'Yes' || g_form.getValue('variables.variable3') == 'Yes' && g_scratchpad.isApproved == 'true') {
if (g_form.getValue('variables.variable2') == 'Yes' && g_form.getValue('variables.variable3') == 'Yes' && g_scratchpad.isApproved == 'true') {
g_form.setDisplay('variables.variable1',true);
g_form.setMandatory('variables.variable1',true);
}
}
}
}
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2022 02:51 AM
Hi Ankur,
Yes I have a Display business rule on RITM table:
(function executeRule(current, previous /*null when async*/) {
// Add your code here
var gr = new GlideRecord("sysapproval_approver");
gr.addQuery("sysapproval", current.request_item);
gr.addQuery("state", "approved");
gr.query();
if (gr.next()) {
g_scratchpad.isApproved = 'true';
}
g_scratchpad.isApproved = 'false';
})(current, previous);