Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

answer returning false while making field mandatory on resolve

ABC6
Tera Contributor

I am making field assigned to Non-mandatory while resolving when there is an external reference record attached over the related list of incident, for this i have written script include and client script and not getting solution

isUserMember: function() {
        var userGrp = new GlideRecord('sys_user_grmember');
        userGrp.addQuery('user', this.getParameter('sysparm_usr'));
        userGrp.addQuery('group', this.getParameter('sysparm_grp'));
        userGrp.setLimit(1);
        userGrp.query();
        if (userGrp.next()) {
            var incidentId = this.getParameter('sysparm_is_external_reference');
        var gr = new GlideRecord('u_external_references');
        gr.addQuery('u_task', incidentId);
        gr.setLimit(1);
        gr.query();
       
        // Check if there's an external reference for the incident
        if (gr.next()) {
            return true;
        } else {
            return false;
        }
    }
    else {
        return false;
    }
       

    },
 
 
Client Script
if (g_form.getViewName() == 'sow_incident_resolve_modal' || g_form.getViewName() == 'ui16_incident_resolve_modal') {

        if (isLoading || newValue === '') {
            g_form.setMandatory('comments', true);
            g_form.setMandatory('assignment_group', true);

        }
        if (g_form.getValue('assigned_to') == '') {
            var getGroup = new GlideAjax('ResetAssignee');
            getGroup.addParam('sysparm_name', 'isUserMember');
            getGroup.addParam('sysparm_usr', g_user.userID);
            getGroup.addParam('sysparm_grp', g_form.getValue('assignment_group'));
            getGroup.addParam('sysparm_is_external_reference',g_form.getUniqueValue());
            getGroup.getXML(FCRAssignmentGroup);

        }
    }

}

function FCRAssignmentGroup(response) {
    var ans = response.responseXML.documentElement.getAttribute("answer");
    alert(ans);
    if (ans == true || ans == 'true') {
        g_form.setMandatory('assigned_to', false);
    } else {
        g_form.setMandatory('assigned_to', true);
    }

}
1 ACCEPTED SOLUTION

GopikaP
Mega Sage

Hi @ABC6 , Is the current user part of the assignment group you selected? If he is not, then it is directly returning false, even if the reference record exists in 'u_external_references' table.

View solution in original post

15 REPLIES 15

it is reference field

Shubham_Jain
Mega Sage
Mega Sage

@ABC6 

Fixed Script Include:

var ResetAssignee = Class.create();
ResetAssignee.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    isUserMember: function() {
        var userGrp = new GlideRecord('sys_user_grmember');
        userGrp.addQuery('user', this.getParameter('sysparm_usr'));
        userGrp.addQuery('group', this.getParameter('sysparm_grp'));
        userGrp.setLimit(1);
        userGrp.query();

        if (userGrp.next()) {
            var incidentId = this.getParameter('sysparm_is_external_reference');

            var gr = new GlideRecord('u_external_references');
            gr.addQuery('u_task', incidentId);
            gr.setLimit(1);
            gr.query();

            // Return 'true' if an external reference exists, else return 'false'
            return gr.next() ? 'true' : 'false';
        }
        return 'false';
    }
});

 

Fixed Client Script:

 

if (g_form.getViewName() == 'sow_incident_resolve_modal' || g_form.getViewName() == 'ui16_incident_resolve_modal') {

    if (isLoading || newValue === '') {
        g_form.setMandatory('comments', true);
        g_form.setMandatory('assignment_group', true);
    }

    if (g_form.getValue('assigned_to') == '') {
        var getGroup = new GlideAjax('ResetAssignee');
        getGroup.addParam('sysparm_name', 'isUserMember');
        getGroup.addParam('sysparm_usr', g_user.userID);
        getGroup.addParam('sysparm_grp', g_form.getValue('assignment_group'));
        getGroup.addParam('sysparm_is_external_reference', g_form.getUniqueValue());

        getGroup.getXMLAnswer(function(response) {
            if (response === 'true') {
                g_form.setMandatory('assigned_to', false);
            } else {
                g_form.setMandatory('assigned_to', true);
            }
        });
    }
}

 

 

 

✔️ If this solves your issue, please mark it as Correct.


✔️ If you found it helpful, please mark it as Helpful.



Shubham Jain


Not Working

GopikaP
Mega Sage

Hi @ABC6 , Is the current user part of the assignment group you selected? If he is not, then it is directly returning false, even if the reference record exists in 'u_external_references' table.

ABC6
Tera Contributor

it is empty i have not selected any thing in the assigned to or you are refering current logged in user