Help with copying reference variables from a record producer to work notes

Brendan Hallida
Kilo Guru

Hi all,

I have a record producer that I want to copy some variables over to the work notes.

I found the thread below which shows how and have it working with plain text, however, I am having issues with reference fields.

https://community.servicenow.com/community?id=community_question&sys_id=77ae0761dbdcdbc01dcaf3231f96...

When I add a reference field as a variable, the script does not run and I don't even get the Variables: in the work notes.  Here is the script:

var wn = 'Variables:';
for (var key in producer)
	if (producer[key]) {
	if (key.search('boom') != -1) {
		var v = producer[key];
		wn += '\n' + v.getGlideObject().getQuestion().getLabel() + ': ' + v.getDisplayValue();
	}
}
current.work_notes = wn;

Any ideas?

Thanks, Brendan

1 ACCEPTED SOLUTION

Ok. I thought you were using the question Label. Lets try this

 

(function executeRule(current, previous /*null when async*/) {
	
	var desc = '';
	var qtype = 0;
	var q = new GlideRecord('question_answer');
	q.addQuery('table_sys_id',current.sys_id);
	q.orderBy('order');
	q.query();
	
	while (q.next())
		{
		if (q.value!='' && q.question.name.indexOf('boom')>-1 && q.value!='false' || q.question.type==11)
			{
			
			if (q.question.type==11)
				desc = desc+'\n';
			
			
			if (q.question.type!=7)
				{
				if (desc=='')
					desc = q.question.getDisplayValue()+': '+getRefValue(q.question.type,q.question.reference,q.value);
				else
					desc = desc+'\n'+q.question.getDisplayValue()+': '+getRefValue(q.question.type,q.question.reference,q.value);
			}
			else
				{
				if (qtype==7)
					desc = desc+','+q.question.getDisplayValue();
				else
					desc = desc+' '+q.question.getDisplayValue();
			}
			
			qtype = q.question.type;
		}
		
		if (q.question.type==19)
			desc = desc+'\n';
	}
	
	if (desc!='')
		current.description = desc;
	
})(current, previous);

function getRefValue(type,table,value)
{
	if (type==8)
		{
		var ref = new GlideRecord(table);
		ref.get(value);
		
		return ref.getDisplayValue();
	}
	else
		{
		return value;
	}
}

Please mark this response as correct or helpful if it assisted you with your question.

View solution in original post

18 REPLIES 18

Ok. I thought you were using the question Label. Lets try this

 

(function executeRule(current, previous /*null when async*/) {
	
	var desc = '';
	var qtype = 0;
	var q = new GlideRecord('question_answer');
	q.addQuery('table_sys_id',current.sys_id);
	q.orderBy('order');
	q.query();
	
	while (q.next())
		{
		if (q.value!='' && q.question.name.indexOf('boom')>-1 && q.value!='false' || q.question.type==11)
			{
			
			if (q.question.type==11)
				desc = desc+'\n';
			
			
			if (q.question.type!=7)
				{
				if (desc=='')
					desc = q.question.getDisplayValue()+': '+getRefValue(q.question.type,q.question.reference,q.value);
				else
					desc = desc+'\n'+q.question.getDisplayValue()+': '+getRefValue(q.question.type,q.question.reference,q.value);
			}
			else
				{
				if (qtype==7)
					desc = desc+','+q.question.getDisplayValue();
				else
					desc = desc+' '+q.question.getDisplayValue();
			}
			
			qtype = q.question.type;
		}
		
		if (q.question.type==19)
			desc = desc+'\n';
	}
	
	if (desc!='')
		current.description = desc;
	
})(current, previous);

function getRefValue(type,table,value)
{
	if (type==8)
		{
		var ref = new GlideRecord(table);
		ref.get(value);
		
		return ref.getDisplayValue();
	}
	else
		{
		return value;
	}
}

Please mark this response as correct or helpful if it assisted you with your question.

Oh it works!

since it was the question, my question is Boom_test, and we were searching boom. with a lower case.

I thought we were searching variable name, not the question!

 

EDIT:

To add, i changed the if statement to the below, and it is now working for the name of the variable 🙂

 

if (q.value!='' && q.question.name.indexOf('boom')>-1 && q.value!='false' || q.question.type==11)

Thanks so much for your help once again!  If you are ever in Sydney, hit me up and ill shout you dinner 🙂

 

haha, we both replied pretty close together.  thanks again!!

divyasurada
Tera Contributor

When I used the code provided by Sanjiv Meher, It works perfectly.

 

But it is taking a way lot of time to load the page after user submits the RP.

 

Any points to avoid this situation.

 

Thanks,

Divya