State should display based on country selected in Record producer form

VikramM1
Tera Contributor

we have two variables in record producer one is country reference to country table and state referencing to state table. In country table we have list of countries and in state table we have country field referring to country table and state field having states based on country. In record producer once we select country, state should show in list based on country name. How to achieve this in service now

1 ACCEPTED SOLUTION

@VikramM1 Try the following, just change the table names according to yours.

 

Reference Qualifier in Catalog item:

kkrushkov_0-1711622401179.png

 

Script Include: 

var FilterStates = Class.create();
FilterStates.prototype = {

    getStatesByCountry: function(country) {
        //You check if the country is empty. If it is you don't include it in the reference qualifier and return.
        if (!country) return '';
        var stateList = [];

        var stateGr = new GlideRecord('your_state_table');
        stateGr.addQuery('your_country_field', country);
        stateGr.query();
        while (stateGr.next()) {
            stateList.push(stateGr.getUniqueValue());
        }

        return "sys_idIN" + stateList.join(',');
    },

    type: 'FilterStates'
};

I hope this answers your question! 🙂

If it does, kindly mark it as answered.

 

 

View solution in original post

12 REPLIES 12

@VikramM1 Try the following, just change the table names according to yours.

 

Reference Qualifier in Catalog item:

kkrushkov_0-1711622401179.png

 

Script Include: 

var FilterStates = Class.create();
FilterStates.prototype = {

    getStatesByCountry: function(country) {
        //You check if the country is empty. If it is you don't include it in the reference qualifier and return.
        if (!country) return '';
        var stateList = [];

        var stateGr = new GlideRecord('your_state_table');
        stateGr.addQuery('your_country_field', country);
        stateGr.query();
        while (stateGr.next()) {
            stateList.push(stateGr.getUniqueValue());
        }

        return "sys_idIN" + stateList.join(',');
    },

    type: 'FilterStates'
};

I hope this answers your question! 🙂

If it does, kindly mark it as answered.

 

 

Its didn't work still.

Could you please provide me with screenshots of your script include and reference qualifier? Please ensure that the names match your fields.

Sujatha V M
Kilo Patron
Kilo Patron

@VikramM1 Please use the below link as reference to your requirement to retrieve the values, 

 

https://concurrency.com/blog/servicenow-dependent-variables-on-record-producer-in-service-catalog/

 

Please mark this as helpful and accept it as a solution if this resolves your query.

Thanks,

Please mark this as helpful and accept it as a solution if this resolves your query.
Sujatha V.M.

This is for choice field