How to get name from change request

Not applicable

Hi all,

 

We are trying to get the template name which is used to create change request using the field std_change_producer_version(proposal) it is a reference filed in the change form that is a  reference field if open that record there will one template) std_change_producer which store the template name which is used in change record we are trying to fetch by dot walking like this ( current.std_change_producer_version.std_change_producer)  but it is not working can anyone help us how to fetch the standard template name business rule using the field proposal. 

 

var name = GlideTemplate.get(current.std_change_producer_version.std_change_producer);
    var template_name = name.getDisplayName();
   gs.log("Template lode using" +template name);
        gs.log("template change type 1" + type_of_change);

        if (type_of_change == 'standard') {
            gs.log("template change type 2" +name);
            var standard_template = new GlideRecord('std_change_template');
          standard_template.addQuery('name' , template_name);
            standard_template.query();

}

 

Anyone please

1 ACCEPTED SOLUTION

Here is the updated BR with a method getValueForKey(key). 

(function executeRule(current, previous /*null when async*/ ) {

    // Add your code here
    var templateObjectArray = [];
    var producer_version = new GlideRecord('std_change_producer_version');
    if (producer_version.get(current.std_change_producer_version)) {
        var template = new GlideRecord('std_change_record_producer');
        if (template.get('sys_id', producer_version.std_change_producer)) {
            gs.addInfoMessage('Template name ' + template.name);

            var glideTemplate = new GlideRecord('std_change_template');
            if (glideTemplate.get('name', template.getValue('name'))) {
                var templateArray = glideTemplate.getValue('template').split('^');
                for (var i = 0; i < templateArray.length; i++) {
                    var tempObject = {};
                    tempObject[templateArray[i].split('=')[0]] = templateArray[i].split('=')[1];
                    templateObjectArray.push(tempObject);
                }
                //gs.addInfoMessage(JSON.stringify(templateObjectArray));

            }
        }

        //Following code shows how you should extract template fields
        // for (var key = 0; key < templateObjectArray.length; key++) {
        //     gs.addInfoMessage('Field is <b>' + Object.keys(templateObjectArray[key])[0] + '</b> Value is <b>' + templateObjectArray[key][Object.keys(templateObjectArray[key])[0]]+'</b>');
        // }

		//Use the function here
		gs.addInfoMessage('Field is <b>' + 'short_description' + '</b> Value is <b>' +getValueForKey('short_description') +'</b>');

    }

//Function to get value for a specific key
    function getValueForKey(key){
		var valueForKey = '';
		for(var k=0;k<templateObjectArray.length;k++){
			var tempField = templateObjectArray[k];
			if(Object.keys(tempField).indexOf(key)>-1){
				valueForKey=tempField[key];
				break;
			}
		}

		return valueForKey;
	}
})(current, previous);

 

In function getValueForKey(key) here key is the name of template field whose value you would like to extract 

 

For e.g. 

		gs.addInfoMessage('Field is <b>' + 'short_description' + '</b> Value is <b>' +getValueForKey('short_description') +'</b>');

Here I am fetching the value of template field short_description by calling the method 

getValueForKey('short_description')
 
Please mark my replies as correct answers and mark them helpful if they manage to solve your problem.

 

View solution in original post

5 REPLIES 5

Sandeep Rajput
Tera Patron

Use the following code in the before business rule on change_request table to get the template name.

(function executeRule(current, previous /*null when async*/ ) {

    // Add your code here
    var producer_version = new GlideRecord('std_change_producer_version');
    if (producer_version.get(current.std_change_producer_version)) {		
        var template = new GlideRecord('std_change_record_producer');
        if (template.get('sys_id', producer_version.std_change_producer)) {
            gs.addInfoMessage('Template name ' + template.name);
        }
    }

})(current, previous);

Not applicable

Hi,

 

Thanks for the reply the given code is working i need one more thing after retrieving the template name i need retrieve the template from std_change_template table and i need to get value of that template how we can achieve this

Here is the updated business script. 

(function executeRule(current, previous /*null when async*/ ) {

    // Add your code here
    var templateObjectArray = [];
    var producer_version = new GlideRecord('std_change_producer_version');
    if (producer_version.get(current.std_change_producer_version)) {
        var template = new GlideRecord('std_change_record_producer');
        if (template.get('sys_id', producer_version.std_change_producer)) {
            gs.addInfoMessage('Template name ' + template.name);

            var glideTemplate = new GlideRecord('std_change_template');
            if (glideTemplate.get('name', template.getValue('name'))) {
                var templateArray = glideTemplate.getValue('template').split('^');
                for (var i = 0; i < templateArray.length; i++) {
                    var tempObject = {};
                    tempObject[templateArray[i].split('=')[0]] = templateArray[i].split('=')[1];
                    templateObjectArray.push(tempObject);
                }
                //gs.addInfoMessage(JSON.stringify(templateObjectArray));

            }
        }

        //Following code shows how you should extract template fields
        for (var key = 0; key < templateObjectArray.length; key++) {
            gs.addInfoMessage('Field is <b>' + Object.keys(templateObjectArray[key])[0] + '</b> Value is <b>' + templateObjectArray[key][Object.keys(templateObjectArray[key])[0]]+'</b>');
        }

    }

})(current, previous);

 

Not applicable

Hi @Sandeep Rajput ,

 

how to retrieve value for specific key for example if key is 'environment'.  we need to fetch the value of that key 

Thanks