- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-13-2018 12:20 AM
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.
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
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-15-2018 09:20 PM
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-13-2018 04:05 PM
Hi Ankur,
Not yet, havent yet worked out how to fix the script that I have.
Any ideas?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-13-2018 04:12 PM
Instead of adding it to record producer, I added the following BR script to my target table which runs on onInsert. I have done few additional formatting, which can be removed if required.
(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.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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-13-2018 04:50 PM
Hi Sanjiv,
Cheers for that, I seem to be getting a fair few entries, but they are all undefined.
I am running this on the sn_sm_marketing_request table, and have altered yours as below:
(function executeRule(current, previous /*null when async*/) {
var desc = '';
var qtype = 0;
var q = new GlideRecord('sn_sm_marketing_request');
q.addQuery('table_sys_id',current.sys_id);
q.orderBy('order');
q.query();
while (q.next())
{
if (q.value!='' && 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;
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-13-2018 04:54 PM
You don't need to change the table name. Just use the script and it should work
Please mark this response as correct or helpful if it assisted you with your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-13-2018 05:29 PM
oh sweet, that worked well 🙂
Do you think we can filter it to only include variables that contain the word 'boom' (an example, not my naming convention haha)
Cheers, Brendan