- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-21-2022 03:19 PM
Hi Community
Need some assistance with script include. I created onchange client script & script include that on 'resolve' will check to see if the Incident was opened by a member of the service desk. What am I doing wrong in my scripts. Any help would be appreciated.
client callable is checked on my script include record.
Client Script
// Get Opened By and State values
var opened = g_form.getValue('opened_by');
var state = g_form.getValue('state');
if (state == 6) {
var ga = new GlideAjax('getServiceDeskMembers');
ga.addParam('sysparm_name', 'validateOpenedBy');
ga.addParam('sysparm_user', opened);
ga.getXML(yellow);
}
}
function yellow(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if (answer) {
g_form.addInfoMessage('opened by is member of Service Desk');
} else {
g_form.addErrorMessage('opened by is not member of Service Desk');
return false;
}
}
Script Include
var getServiceDeskMembers = Class.create();
getServiceDeskMembers.prototype = Object.extendsObject(AbstractAjaxProcessor, {
validateOpenedBy: function() {
var openedBy = this.getParameter('sysparm_user');
var group = 'c635a59d84021010d06c6631561545aa'; //Service Desk sys_id
var check = new GlideRecord('sys_user_grmember');
check.addQuery('user', openedBy);
check.addQuery('group', group);
check.query();
if (check.next()) {
return true;
} else {
return false;
}
},
type: 'getServiceDeskMembers'
});
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-22-2022 07:56 PM
I think I found the issue. I don't think it's working for you since g_form is client so the field has to be displayed in order for g_form.getValue('field') to work properly. I've changed up the scripts to below.
Client Script
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//Type appropriate comment here, and begin script below
var state = g_form.getValue('state');
var incnum = g_form.getUniqueValue();
if(state == 6){
var ga = new GlideAjax('getServiceDeskMembers');
ga.addParam('sysparm_name', 'validateOpenedBy');
ga.addParam('sysparm_incnum', incnum);
ga.getXML(yellow);
}
function yellow(response){
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer){
g_form.addInfoMessage('opened by is memeber of Service Desk');
} else {
g_form.addInfoMessage('opened by is NOT memeber of Service Desk');
}
}
}
Script Include
var getServiceDeskMembers = Class.create();
getServiceDeskMembers.prototype = Object.extendsObject(AbstractAjaxProcessor, {
validateOpenedBy: function(){
var incnum = this.getParameter('sysparm_incnum');
var group = 'd625dccec0a8016700a222a0f7900d06'; //<--REPLACE WITH YOUR INSTANCE'S SYS_ID
var gr = new GlideRecord('incident');
gr.addQuery('sys_id', incnum);
gr.query();
if(gr.next()){
var openedBy = gr.opened_by;
}
var check = new GlideRecord('sys_user_grmember');
check.addQuery('user', openedBy);
check.addQuery('group', group);
check.query();
if(check.next()){
return true;
} else {
return false;
}
},
type: 'getServiceDeskMembers'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-21-2022 03:59 PM
Below worked for me:
Client Script
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//Type appropriate comment here, and begin script below
var opened = g_form.getValue('opened_by');
var state = g_form.getValue('state');
if(state == 6){
var ga = new GlideAjax('getServiceDeskMembers');
ga.addParam('sysparm_name', 'validateOpenedBy');
ga.addParam('sysparm_user', opened);
ga.getXML(yellow);
}
function yellow(response){
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer){
g_form.addInfoMessage('opened by is memeber of Service Desk');
} else {
g_form.addInfoMessage('opened by is NOT memeber of Service Desk');
}
}
}
Script Include
var getServiceDeskMembers = Class.create();
getServiceDeskMembers.prototype = Object.extendsObject(AbstractAjaxProcessor, {
validateOpenedBy: function(){
var openedBy = this.getParameter('sysparm_user');
var group = 'd625dccec0a8016700a222a0f7900d06'; //<--REPLACE WITH YOUR INSTANCE'S SYS_ID
var check = new GlideRecord('sys_user_grmember');
check.addQuery('user', openedBy);
check.addQuery('group', group);
check.query();
if(check.next()){
return true;
} else {
return false;
}
},
type: 'getServiceDeskMembers'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-22-2022 08:35 AM
Even though the opened_by user is NOT a part of the Service Desk my client script still shows the answer as 'opened by is member of Service Desk' and this is wrong. My else block isn't being triggered in this case. My script include isn't returning false...not sure why.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-22-2022 07:56 PM
I think I found the issue. I don't think it's working for you since g_form is client so the field has to be displayed in order for g_form.getValue('field') to work properly. I've changed up the scripts to below.
Client Script
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//Type appropriate comment here, and begin script below
var state = g_form.getValue('state');
var incnum = g_form.getUniqueValue();
if(state == 6){
var ga = new GlideAjax('getServiceDeskMembers');
ga.addParam('sysparm_name', 'validateOpenedBy');
ga.addParam('sysparm_incnum', incnum);
ga.getXML(yellow);
}
function yellow(response){
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer){
g_form.addInfoMessage('opened by is memeber of Service Desk');
} else {
g_form.addInfoMessage('opened by is NOT memeber of Service Desk');
}
}
}
Script Include
var getServiceDeskMembers = Class.create();
getServiceDeskMembers.prototype = Object.extendsObject(AbstractAjaxProcessor, {
validateOpenedBy: function(){
var incnum = this.getParameter('sysparm_incnum');
var group = 'd625dccec0a8016700a222a0f7900d06'; //<--REPLACE WITH YOUR INSTANCE'S SYS_ID
var gr = new GlideRecord('incident');
gr.addQuery('sys_id', incnum);
gr.query();
if(gr.next()){
var openedBy = gr.opened_by;
}
var check = new GlideRecord('sys_user_grmember');
check.addQuery('user', openedBy);
check.addQuery('group', group);
check.query();
if(check.next()){
return true;
} else {
return false;
}
},
type: 'getServiceDeskMembers'
});