@is_12 

it seems script include is not getting called and hence the 3 parameters are coming as empty

a) account variable refers to which table?

b) the onChange is running on which table? that variable refers to which table?

Client Script:

1) pass the catalog item sysId as hard-coded value

    function onChange(control, oldValue, newValue, isLoading) {
        if (isLoading || newValue == '') {
            return;
        }
        if (g_user.hasRole('agent_workspace_user')) {
            alert('welcome');
            var ga = new GlideAjax('BT_CSR_SSR_CatalogUtils');
            ga.addParam('sysparm_name', 'hasExistingRITM');
            ga.addParam('sysparm_user_id', newValue);
            ga.addParam('sysparm_account', g_form.getValue('account'));
            ga.addParam('sysparm_catalog_item', 'catalogItemSysId'); // catalog item sys_id
            ga.getXMLAnswer(function(response) {
                alert(response);
                if (response == 'true') {
                    alert(true);
                    g_form.showFieldMsg('contact_name', 'This user has already requested this item.', 'error'); //check field name
                } else {
                    alert(false);
                    g_form.showFieldMsg('contact_name', 'This user has already nottttt requested this item.', 'error'); //check field name
                }
            });
        }
    }

Script Include: it should be client callable

1) pass the correct sysparm name

var BT_CSR_SSR_CatalogUtils = Class.create();
BT_CSR_SSR_CatalogUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    hasExistingRITM: function() {
        var checkingRITM;
        var userId = this.getParameter('sysparm_user_id');
        var catalogItemId = this.getParameter('sysparm_catalog_item');
        var userAccount = this.getParameter('sysparm_account');

        gs.info('agentIsh279 ' + userId);
        gs.info('agentIsh280 ' + catalogItemId);
        gs.info('agentIsh281 ' + userAccount);

        var ritmGR = new GlideRecord('sc_req_item');
        ritmGR.addEncodedQuery('cat_item.sys_id=' + catalogItemId + '^company.sys_id=' + userAccount + '^requested_for.sys_id=' + userId);
        ritmGR.setLimit(1);
        ritmGR.query();
        gs.info('agentIsh292 ' + ritmGR.getRowCount());
        return ritmGR.hasNext().toString();
    },

    type: 'BT_CSR_SSR_CatalogUtils'
});

AnkurBawiskar_0-1747144069548.png

 

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post