- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-25-2016 01:51 PM
Hello All,
I hope you are having a wonderful Monday! I needed to reach out to the community for some assistance and see if anyone can help me figure my problem out. I need to take all the variables and pass them in to the "Description" field in the task (in the workflow). I need to make sure make sure they display in the "description" field in a certain order, skip anything that is null, and each variable is in a new line, etc. The variables are all types (reference, integers, check box, string, etc.) This item has about 35/40 variables but I will provide how I have coded a few of them below. I am getting syntax errors and also the code is not really working.
1) is there a better way that what I have present below?
2) Can you please help me perfect my code below and explain what I might be doing wrong?
Example of my code (have to code this for about 38 variables due to them being displayed in a certain order):
//create a variable that will be appended to as you check each request variable for a value
var new_description;
var event_name = current.variables.event_name;
var event_date_start = current.variables.event_date_start;
var event_time_start = current.variables.event_time_start;
var requested_by = current.variables.requested_by;
if (null !=event_name) {
new_description = (new_description && "Name of Event: " && event_name.toString());
}
if (null !=event_date_start) {
new_description = \n(new_description && "Date Event Will Begin: " && event_date_start.toString());
}
if (null !=event_time_start) {
new_description = \n(new_description && "Daily Start Time: " && event_time_start.toString());
}
if (null !=requested_by) {
new_description = \n(new_description && "Requested By: " && requested_by.toString());
}
current.description = new_description;
***not passing the actual variables over because the page looks too busy for our customer and is overwhelming. that would have taken seconds to do but they wanted me to pass the value into the description field for their full-fillers to be able to read. ***
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-25-2016 01:59 PM
I just did a similar type of thing in a workflow, creating a task with the summary of the variables in the description field:
var gr = new GlideRecord("sc_req_item");
gr.addQuery("request", current.request.sys_id);
gr.query();
while(gr.next()) {
// Get Owned Variables for Requested Item and sort by Order
var ownvar = new GlideRecord('sc_item_option_mtom');
ownvar.addQuery('request_item.number', gr.number);
ownvar.addQuery('sc_item_option.value','!=','');
ownvar.orderBy('sc_item_option.order');
ownvar.query();
var items = "Summary of " + gr.number + ": " + gr.cat_item.getDisplayValue() + "\n\n";
while(ownvar.next()) {
var field = ownvar.sc_item_option.item_option_new;
var fieldValue = ownvar.sc_item_option.item_option_new.name;
// Print variable name
items += field.getDisplayValue() + ": " + gr.variables[fieldValue].getDisplayValue() + "\n";
}
}
task.description = items;
Try that and see if it works for what you need. It does skip null variables and does an 'OrderBy' based on the Order number of the variable. It ends up looking something like this:
++++++
Summary of RITM0016419: Unitize Rental/RPO Unit
Equipment Number: 0987
ETM Order Number: 0987
Tag Number: 05-698
Is this an asset?: No
Characteristic Value: Test
Characteristic Name: Test
Equipment Description: Test
Brand Name: Test
Model Number: Test
Model Year: Test
Serial Number: Test
++++++
Hope that helps!
Cheers,
Tim

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-05-2017 11:25 AM
Hi Tim,
No luck. Can't seem to find a way to evaluate against "undefined" Any other ideas?
Thanks!
-Wesley

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-05-2017 12:06 PM
Wesley,
I am not sure, unfortunately. I just did a test using the same script against a catalogue item with a 'Break' and a 'Container Split', and neither of those variables appeared in the output. I assume due to the fact the values are blank.
What version of the platform are you on? Can you confirm you have this in your query:
ownvar.addQuery('sc_item_option.value', '!=', '');
That should leave out any label/value pairs with an empty value.
Cheers,
Tim

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-05-2017 12:21 PM
Hi Tim,
Yes, have that line in the code and on the latest Helsinki patch (I believe). That is interesting you are not seeing Break Lines or Containers. I will see if that is occuring as well in my personal dev instance as well.
Thanks!
-Wesley

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-05-2017 04:08 PM
Hi Tim,
Bingo!
The Workflow script that copies variables to Description field to task has been FIXED! I determined that the "undefined" values/variables were the cause of the script not being able to assign the variable list to Task description field [ task.description = items; ]. Once I added ownvar.addQuery('sc_item_option.value','!=','undefined'); to the glide record query, everything began to work correctly. I also added ownvar.addQuery('sc_item_option.value','!=','false'); to further reduce the list to 'good/modified variables/values; "" [blank] values doesn't remove all unnecessary variables. I had tried the ownvar.addQuery('sc_item_option.value','!=','undefined') earlier in my troubleshooting but failed to noticed I had a single character typo which nullified the line and as an idiot I copied the same code to my personal dev instance. Anyway, once you told me it worked for you then it helped to scrutinize what was wrong on my side.
Thanks again for your help.
-Wesley
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-02-2017 03:47 PM
Hi Tim,
I pasted your code in my workflow (catalog task script section), but it does not work. In fact it does not create the sc task at all. do i need to modify something?
- var gr = new GlideRecord("sc_req_item");
- gr.addQuery("request", current.request.sys_id);
- gr.query();
- while (gr.next()) {
- // Get Owned Variables for Requested Item and sort by Order
- var ownvar = new GlideRecord('sc_item_option_mtom');
- ownvar.addQuery('request_item.number', gr.number);
- ownvar.addQuery('sc_item_option.value', '!=', '');
- ownvar.orderBy('sc_item_option.order');
- ownvar.query();
- var items = "Summary of " + gr.number + ": " + gr.cat_item.getDisplayValue() + "\n\n";
- while (ownvar.next()) {
- // gs.print("we're Here");
- var field = ownvar.sc_item_option.item_option_new;
- var fieldValue = ownvar.sc_item_option.item_option_new.name;
- // Print variable name
- items += field.getDisplayValue() + ": " + gr.variables[fieldValue].getDisplayValue() + "\n";
- }
- }
- task.Description = items;
regards,
max