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.

When Change Planned End Date field then Attachment should be mandatory in change request form

Suresh KSB
Giga Expert

Requirement :

When change the Planned End Date field in change request form then Attachment should be mandatory.

SureshKSB_0-1712303232115.png

 

Pls help me on this requirement.

1 ACCEPTED SOLUTION

Suresh KSB
Giga Expert

The below code is working for me

 

Onchange client script

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
       
        return;   
    }

    if (newValue != oldValue && g_form.getValue('state') != '-5') {
       
            var catalogItemID = g_form.getUniqueValue();
            //alert('test123' + catalogItemID);
            var demo = new GlideAjax('CheckAttachmentChangeReq');
            demo.addParam('sysparm_name', 'checkAttachment');
            demo.addParam('sysparm_catalog_id', catalogItemID);
            demo.getXML(attr);
       
    }

function attr(response) {
    var answer = response.responseXML.documentElement.getAttribute("answer");

    if (answer == 'yes') {

        alert("Attachment is available now. Thanks!! : " + answer);
        return true;
    } else{

        alert("Attachment is not available!! Please proceed saving the form with the attachment : ");

        //return false;
        g_form.clearValue('end_date');
     
    }
}
}
 
Script Include :
 
var CheckAttachmentChangeReq = Class.create();
CheckAttachmentChangeReq.prototype = Object.extendsObject(AbstractAjaxProcessor, {
 checkAttachment: function() {
       
        var x = this.getParameter('sysparm_catalog_id');
        gs.log("AG formID"+ x);
        var gr = new GlideRecord("sys_attachment");
        gr.addQuery('table_sys_id', x);
        gr.addQuery('table_name', 'change_request');
        //gr.addQuery('table_sys_id', this.getParameter('sysparm_catalog_id'));
        gr.query();

        if (gr.next()) {
         //   gs.log("Kudos to you!! You have added attachment ");
            return 'yes';
        } else {
         //   gs.log("You must attach document before submitting the form.");
            return 'no';
        }
       
    },

    type: 'CheckAttachmentChangeReq'
});

View solution in original post

2 REPLIES 2

Dr Atul G- LNG
Tera Patron
Tera Patron

Hi @Suresh KSB 

 

Need to write client script or in UI policy (Script) for this

 

https://www.servicenow.com/community/developer-forum/how-to-make-attachment-mandatory-using-on-chang...

 

https://www.servicenow.com/community/developer-forum/client-script-to-make-attachment-mandatory/m-p/...

 

*************************************************************************************************************
If my response proves useful, please indicate its helpfulness by selecting " Accept as Solution" and " Helpful." This action benefits both the community and me.

Regards
Dr. Atul G. - Learn N Grow Together
ServiceNow Techno - Functional Trainer
LinkedIn: https://www.linkedin.com/in/dratulgrover
YouTube: https://www.youtube.com/@LearnNGrowTogetherwithAtulG
Topmate: https://topmate.io/atul_grover_lng [ Connect for 1-1 Session]

****************************************************************************************************************

Suresh KSB
Giga Expert

The below code is working for me

 

Onchange client script

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
       
        return;   
    }

    if (newValue != oldValue && g_form.getValue('state') != '-5') {
       
            var catalogItemID = g_form.getUniqueValue();
            //alert('test123' + catalogItemID);
            var demo = new GlideAjax('CheckAttachmentChangeReq');
            demo.addParam('sysparm_name', 'checkAttachment');
            demo.addParam('sysparm_catalog_id', catalogItemID);
            demo.getXML(attr);
       
    }

function attr(response) {
    var answer = response.responseXML.documentElement.getAttribute("answer");

    if (answer == 'yes') {

        alert("Attachment is available now. Thanks!! : " + answer);
        return true;
    } else{

        alert("Attachment is not available!! Please proceed saving the form with the attachment : ");

        //return false;
        g_form.clearValue('end_date');
     
    }
}
}
 
Script Include :
 
var CheckAttachmentChangeReq = Class.create();
CheckAttachmentChangeReq.prototype = Object.extendsObject(AbstractAjaxProcessor, {
 checkAttachment: function() {
       
        var x = this.getParameter('sysparm_catalog_id');
        gs.log("AG formID"+ x);
        var gr = new GlideRecord("sys_attachment");
        gr.addQuery('table_sys_id', x);
        gr.addQuery('table_name', 'change_request');
        //gr.addQuery('table_sys_id', this.getParameter('sysparm_catalog_id'));
        gr.query();

        if (gr.next()) {
         //   gs.log("Kudos to you!! You have added attachment ");
            return 'yes';
        } else {
         //   gs.log("You must attach document before submitting the form.");
            return 'no';
        }
       
    },

    type: 'CheckAttachmentChangeReq'
});