Before submit the catalog item fetch the MRVS variable's values
						
					
					
				
			
		
	
			
	
	
	
	
	
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
07-08-2024 10:43 PM
Hi Team,
I have question like before submit the catalog item need to fetch the Multirow variable set Variable values. Why because I need to equal to this variable's values to back end table filed value's and I need to set one variable value in this catalog item.
If any one know this could pls help on this
Advance thanks team.
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
07-08-2024 10:58 PM
Hi @Venky Kshatriy2,
Create a Catalog Client Script:
Create a Catalog Client Script on the catalog item that will run onSubmit. This script will fetch the Multi-row variable set values, perform the comparison, and set the desired variable value.
Fetch Multi-row Variable Set Values:
Use the g_form API to get the values of the Multi-row variable set. You can access the Multi-row variable set using the g_form.getValue() method.
Perform the Comparison:
Compare the fetched values with the values in the backend table. You might need to use GlideAjax or a script include to perform server-side operations.
Set the Variable Value:
Based on the comparison, set the desired variable value using the g_form.setValue() method.
function onSubmit() {
  // Fetch the Multi-row variable set values
  var multiRowVariableSet = g_form.getValue('multi_row_variable_set');
  // Convert the JSON string to an object
  var multiRowValues = JSON.parse(multiRowVariableSet);
  // Perform the comparison with backend table values
  var isValid = true;
  for (var i = 0; i < multiRowValues.length; i++) {
    var row = multiRowValues[i];
    // Replace 'field_name' with the actual field name in the backend table
    if (!compareWithBackendTable(row.field_name)) {
      isValid = false;
      break;
    }
  }
  // Set the variable value based on the comparison
  if (isValid) {
    g_form.setValue('variable_name', 'valid');
  } else {
    g_form.setValue('variable_name', 'invalid');
  }
  // Prevent form submission if necessary
  return isValid;
}
function compareWithBackendTable(fieldValue) {
  // Use GlideAjax to call a Script Include for the server-side comparison
  var ga = new GlideAjax('ScriptIncludeName');
  ga.addParam('sysparm_name', 'compareWithBackendTable');
  ga.addParam('sysparm_field_value', fieldValue);
  ga.getXMLAnswer(function(response) {
    var result = response.responseXML.documentElement.getAttribute("answer");
    return result === 'true';
  });
}- Create a Script Include:
 
var ScriptIncludeName = Class.create();
ScriptIncludeName.prototype = {
  initialize: function() {
  },
  
  compareWithBackendTable: function(fieldValue) {
    // Perform the comparison with the backend table
    var gr = new GlideRecord('backend_table');
    gr.addQuery('field_name', fieldValue);
    gr.query();
    if (gr.next()) {
      return true;
    } else {
      return false;
    }
  },
  
  type: 'ScriptIncludeName'
};Thank you, please make helpful if you accept the solution.
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
07-08-2024 11:37 PM
Thanks for your reply @Yashsvi
I need to changes of variables i need to update the 3rd variable I need to use the on change client script
