- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-27-2024 12:43 PM
How to hide UI Actions available on Incident & Request form for Business stakeholder role?
we have enabled the business stake holder role in snow and added a user to it, but few custom ui
actions are available for this role and respective user. Kindly please advise best way to hide the same
via script or any other best practice.
detailed information can help.!
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-27-2024 02:10 PM
that's strange. Is it in classic view or in workspace?
Could you post screenshot of one ui actions where condition is not working?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 weeks ago
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var ritmNumber = request.queryParams.ritm_number;
var ritmSysId = request.queryParams.ritm_sys_id;
if (!ritmNumber && !ritmSysId) {
response.setStatus(400);
response.setBody({ error: "Provide ritm_number or ritm_sys_id" });
return;
}
var ritmGR = new GlideRecord('sc_req_item');
// Prefer sys_id if both are provided
if (ritmSysId) {
ritmGR.addQuery('sys_id', ritmSysId);
} else {
ritmGR.addQuery('number', ritmNumber);
}
ritmGR.query();
if (!ritmGR.next()) {
response.setStatus(404);
response.setBody({ error: "RITM not found" });
return;
}
var result = [];
var grVar = new GlideRecord('sc_item_option_mtom');
grVar.addQuery('request_item', ritmGR.sys_id);
grVar.query();
while (grVar.next()) {
var option = grVar.sc_item_option.getRefRecord();
var question = option.item_option_new.getRefRecord();
var rawValue = option.getValue('value') || "";
var refTable = question.getValue('reference');
var listTable = question.getValue('list_table');
var displayValue = "";
try {
// Handle list collector
if (listTable && rawValue) {
var ids = rawValue.split(',');
var values = [];
for (var i = 0; i < ids.length; i++) {
var refGR = new GlideRecord(listTable);
if (refGR.get(ids[i])) {
values.push(refGR.getDisplayValue());
}
}
displayValue = values.join(', ');
}
// Handle reference
else if (refTable && rawValue) {
var ids2 = rawValue.split(',');
var values2 = [];
for (var j = 0; j < ids2.length; j++) {
var refGR2 = new GlideRecord(refTable);
if (refGR2.get(ids2[j])) {
values2.push(refGR2.getDisplayValue());
}
}
displayValue = values2.join(', ');
}
// Handle choice / text
else {
displayValue = option.getDisplayValue('value') || rawValue;
}
} catch (e) {
gs.log("Error resolving variable value: " + e.message);
displayValue = rawValue; // fallback
}
result.push({
name: question.getValue('name'),
label: question.getValue('question_text'),
value: displayValue
});
}
response.setStatus(200);
response.setBody({
ritm: ritmGR.getValue('number'),
variables: result
});
})(request, response);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var ritmNumber = request.queryParams.ritm_number;
var ritmSysId = request.queryParams.ritm_sys_id;
if (!ritmNumber && !ritmSysId) {
response.setStatus(400);
response.setBody({
error: "Provide ritm_number or ritm_sys_id"
});
return;
}
var ritmGR = new GlideRecord('sc_req_item');
if (ritmSysId) {
ritmGR.addQuery('sys_id', ritmSysId);
} else {
ritmGR.addQuery('number', ritmNumber);
}
ritmGR.query();
if (!ritmGR.next()) {
response.setStatus(404);
response.setBody({
error: "RITM not found"
});
return;
}
var result = [];
// =========================
// 1. NORMAL VARIABLES
// =========================
var grVar = new GlideRecord('sc_item_option_mtom');
grVar.addQuery('request_item', ritmGR.sys_id);
grVar.orderBy('sc_item_option.item_option_new.order');
grVar.query();
while (grVar.next()) {
var question = grVar.sc_item_option.item_option_new.getRefRecord();
var questionName = question.getValue('name');
var label = question.getValue('question_text');
var displayValue = "";
try {
displayValue = ritmGR.variables[questionName].getDisplayValue();
if (!displayValue) {
displayValue = grVar.sc_item_option.value.toString();
}
} catch (e) {
displayValue = grVar.sc_item_option.value.toString();
}
result.push({
type: "single",
name: questionName,
label: label,
value: displayValue
});
}
// =========================
// 2. MRVS VARIABLES
// =========================
var variablesObj = ritmGR.variables;
for (var varName in variablesObj) {
try {
var varElement = variablesObj[varName];
// Detect MRVS (multi-row variables come as object/array-like)
if (varElement && typeof varElement === "object" && varElement.getRows) {
var rows = varElement.getRows();
var mrvsData = [];
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var rowObj = {};
var cells = row.getCells();
for (var j = 0; j < cells.length; j++) {
var cell = cells[j];
var colName = cell.getName();
var colValue = cell.getCellDisplayValue();
rowObj[colName] = colValue;
}
mrvsData.push(rowObj);
}
result.push({
type: "mrvs",
name: varName,
value: mrvsData
});
}
} catch (e) {
// ignore non-MRVS safely
}
}
response.setStatus(200);
response.setBody({
ritm: ritmGR.getValue('number'),
variables: result
});
})(request, response);
