- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-27-2024 11:10 PM
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
Solved! Go to Solution.
- Labels:
-
compliance
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-28-2024 10:31 AM
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

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-27-2024 11:23 PM
Hi,
Your question is a bit unclear, so I guessing a bit on what you want here.
I assume you want to use this function to return some valid sysIDs to use as a reference qualifier on a reference field somewhere.
Then you should return the results as an encoded query string.
If you expect it to be one or more sysIDs, then the return string should look something like this:
return "sys_idIN" + your_variable_containing_sys_id_comma_separated;
Otherwise, please explain in further detail what you want to use this function for.
Another detail, the function references the "current" object multiple times in the code, but the "current" object is not defined, maybe it should be passed as a parameter to the function?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-27-2024 11:40 PM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-28-2024 02:45 AM
No, not quite right.
More something like this.
var arrResults = [];
var dee = new GlideRecord("sn_install_base_sold_product");
dee.addEncodedQuery("u_platform=" + platform + "^account=" + accounts);
dee.query();
while (dee.next()) {
arrResults.push(dee.getUniqueValue()); // store the sysIDs in the array
}
// return the encoded query back to use as a reference qualifier
return 'sys_idIN' + arrResults.join(',');
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-28-2024 04:54 AM
Hi @OlaN ,
Still only one value is populating in the reference field.
Thanks,
Sam