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.

How to return the value in script include and add that in the reference qualifier in the table

Samiksha2
Mega Sage

Hi All,

I have written the below code. Output is coming correctly. How should I return the sys_id so that it should visible in the reference qualifier field.

getProduct: function() {

        var accounts = current.account;
        var platform = current.u_platform;
        var subProd = current.getDisplayValue("u_sub_products");
 
        var ur = new GlideRecord("u_sub_product");
        ur .addEncodedQuery('u_sub_product=' + subProd + '^u_platform=' + platform);
        ur .query();
        while (ur .next()) {
            var user_array = [];
            var product_array = user_array.push(ur.u_product);
		}
            var dee = new GlideRecord("sn_install_base_sold_product");
            dee.addEncodedQuery("u_platform=" + platform + "^account=" + accounts);
            dee.query();
            while (dee.next()) {
                var prod_array = [];
                var arr = prod_array.push(dee.name);

                if (JSON.stringify(product_array) == JSON.stringify(arr)) {
                    gs.log("OUTPUT RESULTS" + dee.sys_id);
					

                } else {
                    gs.log("FALSE RESULT");
                }
            }
        return dee.sys_id;
       
    },

The return value should populate in the Product field(reference to Sold Product table (sn_install_base_sold_product).

 

Please help me.


Thanks,
Sam

1 ACCEPTED SOLUTION

Hi @Samiksha2 ,

 

In the above you are comparing the jason,  try comparing the arrays and also print the product array and the arr and attach the screen shot of the result,

 

 

 

getProduct: function() {

    var accounts = current.account;
    var platform = current.u_platform;
    var subProd = current.getDisplayValue("u_sub_products");

    var ur = new GlideRecord("u_sub_product");
    var user_array = [];

    ur.addEncodedQuery('u_sub_product=' + subProd + '^u_platform=' + platform);
    ur.query();
    while (ur.next()) {
        user_array.push(ur.u_product.toString());
    }
    var dee = new GlideRecord("sn_install_base_sold_product");
    dee.addEncodedQuery("u_platform=" + platform + "^account=" + accounts);
    dee.query();
    var arrForSysID = [];
    var prod_array = [];
    while (dee.next()) {

        prod_array.push(dee.name.toString());

        function areArraysEqual(array1, array2) {
            for (var i = 0; i < array2.length; i++) {
                if (array1.indexOf(array2[i]) === -1) {
                    return false;
                }
            }
            return true;
        }

        var result = areArraysEqual(user_array, prod_array);
        if (result == true || result == 'true') {
            gs.log("OUTPUT RESULTS" + dee.sys_id);
            arrForSysID.push(dee.getValue('sys_id'));

        } else {
            gs.log("FALSE RESULT");
        }
    }
    gs.info('Product array ' + user_array);
    gs.info('arr ' + prod_array);
    gs.info('Final sysId ' + arrForSysID);
    return 'sys_idIN' + arrForSysID;

},

 

 

 

please share the logs,

 

Please mark this comment as Correct Answer/Helpful if it helped you.

Regards,

Swathi Sarang

View solution in original post

23 REPLIES 23

@Samiksha2 Can you confirm if 

u_product

Is a string or a reference field?

(JSON.stringify(product_array) == JSON.stringify(arr))

As in product array we have an array of u_product (which may be sys_ids if u_product is a reference field) and on the other side arr contains a list of names the comparison may fail.

Hi @Sandeep Rajput ,
In Sub Product table product is String value and in the Sold product it is sys id that's why i am returning name

var prod_array = [];
                var arr = prod_array.push(dee.name);

 

In the logs correct values are coming but it is returning only one value.

Thanks,
Sam

swathisarang98
Giga Sage

Hi @Samiksha2 ,

 

Replace the line "var arr = prod_array.push(dee.name);"  with below,

 

var arr = prod_array.push(dee.name.toString();

 

or

 

var arr = prod_array.push(dee.getValue('name);

 

and while returning use  return 'sys_idIN' + arr ;

 

or 

 

i have updated your code please give it a try,

 

getProduct: function() {

    var accounts = current.account;
    var platform = current.u_platform;
    var subProd = current.getDisplayValue("u_sub_products");

    var ur = new GlideRecord("u_sub_product");
    ur.addEncodedQuery('u_sub_product=' + subProd + '^u_platform=' + platform);
    ur.query();
    while (ur.next()) {
        var user_array = [];
        var product_array = user_array.push(ur.u_product.toString());
    }
    var dee = new GlideRecord("sn_install_base_sold_product");
    dee.addEncodedQuery("u_platform=" + platform + "^account=" + accounts);
    dee.query();
    var arrForSysID = [];
    while (dee.next()) {
        var prod_array = [];
        var arr = prod_array.push(dee.name.toString());

        if (JSON.stringify(product_array) == JSON.stringify(arr)) {
            gs.log("OUTPUT RESULTS" + dee.sys_id);
            arrForSysID.push(dee.getValue('sys_id'));

        } else {
            gs.log("FALSE RESULT");
        }

    }
    gs.print('Sysid' + arrForSysID);
    return 'sys_idIN' + arrForSysID;

},

 

 

If the above doesn't work let me know what you are getting in the logs ?

 

Please mark this comment as Correct Answer/Helpful if it helped you.

Regards,

Swathi Sarang

 

Hi @swathisarang98 ,

This is not working.

Thanks,
Sam

Hi @Samiksha2 ,

 

In the above you are comparing the jason,  try comparing the arrays and also print the product array and the arr and attach the screen shot of the result,

 

 

 

getProduct: function() {

    var accounts = current.account;
    var platform = current.u_platform;
    var subProd = current.getDisplayValue("u_sub_products");

    var ur = new GlideRecord("u_sub_product");
    var user_array = [];

    ur.addEncodedQuery('u_sub_product=' + subProd + '^u_platform=' + platform);
    ur.query();
    while (ur.next()) {
        user_array.push(ur.u_product.toString());
    }
    var dee = new GlideRecord("sn_install_base_sold_product");
    dee.addEncodedQuery("u_platform=" + platform + "^account=" + accounts);
    dee.query();
    var arrForSysID = [];
    var prod_array = [];
    while (dee.next()) {

        prod_array.push(dee.name.toString());

        function areArraysEqual(array1, array2) {
            for (var i = 0; i < array2.length; i++) {
                if (array1.indexOf(array2[i]) === -1) {
                    return false;
                }
            }
            return true;
        }

        var result = areArraysEqual(user_array, prod_array);
        if (result == true || result == 'true') {
            gs.log("OUTPUT RESULTS" + dee.sys_id);
            arrForSysID.push(dee.getValue('sys_id'));

        } else {
            gs.log("FALSE RESULT");
        }
    }
    gs.info('Product array ' + user_array);
    gs.info('arr ' + prod_array);
    gs.info('Final sysId ' + arrForSysID);
    return 'sys_idIN' + arrForSysID;

},

 

 

 

please share the logs,

 

Please mark this comment as Correct Answer/Helpful if it helped you.

Regards,

Swathi Sarang