- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
02-27-2018 11:00 AM
We need a way to print the ticket Details to get sign off from end users.
When I export to a PDF document the details are not listed (See screenshot below). When I try to right click --> print, the format is not usable. How do I get this information to print on the PDF download?
Solved! Go to Solution.
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
02-27-2018 12:15 PM
Hi Trishlipe,
You can print the variables from RITM by creating a UI page, Script Include, and UI action.
Script Include: fetchVariables1, client callable = true
var fetchVariables1 = Class.create();
fetchVariables1.prototype = Object.extendsObject(AbstractAjaxProcessor, {
 itemVariables: function() {
 var itemID = this.getParameter('sysparm_item');
 var displayValue = '';
 var desc = '';
 desc += '<table style="width:100%" cellpadding="0" border="1">';
 desc += '<tr>';
 desc += '</tr>';
 var newLineHTML = '';
 var variables ='variables.'; 
 var grItem = new GlideRecord('sc_req_item');
 grItem.get(itemID);
 var gr = new GlideRecord('sc_item_option_mtom');
 gr.addQuery('request_item',itemID);
 gr.orderBy('sc_item_option.order');
 gr.query();
 var i = 0;
 while(gr.next()) {
 variables ='variables.';
 /* Put all variable values and labels from the variable pool into an array */
 /* Only include non-empty variables, and exclude Label and Container variables */
 //gr.sc_item_option.value.getDisplayValue() != '' gr.sc_item_option.value.getDisplayValue() != 'false'
 if ( gr.sc_item_option.value.getDisplayValue() != 'false' && gr.sc_item_option.item_option_new.active == true && gr.sc_item_option.item_option_new.type != 11 && gr.sc_item_option.item_option_new.type != 19 && gr.sc_item_option.item_option_new.type != 20 && gr.sc_item_option.item_option_new.type != 14 ) {
 //desc += j+") "+ v.getGlideObject().getQuestion().getLabel() + ': ' + v.getDisplayValue() + '<br>' ;
 if(gr.sc_item_option.item_option_new.question_text == 'Current Annual Base' && i%2==1){
 i++;
 }
 if(gr.sc_item_option.item_option_new.question_text == 'Current Supervisor' ){
 //i++;
 }
 if(i%2==0) {
 desc += '<tr>';
 }
 variables += gr.sc_item_option.item_option_new.name;
 displayValue = grItem.getDisplayValue(variables);
 if(displayValue==null || displayValue == undefined) {
 displayValue = '';
 }
 if(gr.sc_item_option.item_option_new.question_text == 'Comments') {
 newLineHTML += '<table style="width:100%" cellpadding="0" border="1">';
 newLineHTML += '<tr><td style="text-align:left;padding:4px;width:20%;background: #80808040;"><span style="text-align:left;font-weight:900;padding:2px" >' + gr.sc_item_option.item_option_new.question_text + '</td><td style="width:80%;padding:4px;"></span><span style="text-align:left;white-space: pre-wrap;"> ' + gr.sc_item_option.value + ' </span></td></tr></table>';
 }
 else {
 desc += '<td style="text-align:left;padding:4px;width:20%;background: #80808040;"><span style="text-align:left;font-weight:900;padding:2px" >' + gr.sc_item_option.item_option_new.question_text + '</td><td style="width:30%"></span><span style="text-align:left;white-space: pre-wrap;"> ' + displayValue + ' </span></td>';
 }
 if(i%2 == 1) {
 desc += '</tr>';
 }
 i++;
 }
 }
 desc += '</table>';
 desc += newLineHTML;
 },
 type: 'fetchVariables1'
});
UI PAge: item_variables
HTML:
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
 <link href="kb_styles.cssx" type="text/css" rel="stylesheet" />
 <div id ="html_content" style="display: none;">
 $[sysparm_item]
 </div>
<div id='printClass'>
 <div id="commentsdiv" style="display: block;">
 <h4 style="font-weight: bold;">Status Change Form for: $[sysparm_number]</h4>
 <!--<table>
 <span><label for="comments">$[sysparm_item]</label></span>
 </table> -->
 
 
 <div id="variable_data"></div>
 </div>
</div>
 <input type='button' id='btn' value='Print' onclick='printPage();'></input>
</j:jelly>
Client Script:
var ga = new GlideAjax('fetchVariables1') ;
 ga.addParam('sysparm_name','itemVariables');
 ga.addParam('sysparm_item',document.getElementById('html_content').innerHTML);
 ga.getXMLWait();
 var val = ga.getAnswer();
//alert(val);
document.getElementById('variable_data').innerHTML = val;
function printPage() 
{
var divToPrint=document.getElementById('printClass');
var newWin=window.open('','Print-Window');
newWin.document.open();
newWin.document.write('<html><body onload="window.print()">'+divToPrint.innerHTML+'</body></html>');
newWin.document.close();
setTimeout(function(){newWin.close();},10);
}
UI Action: Print Form, Table: Requested Item Onclick: printVariables()
function printVariables(){ //Client Side function
var sysid = g_form.getUniqueValue();
 
 var gdw = new GlideModal('item_variables');
 gdw.setTitle('Variables');
 gdw.setWidth(1200);
 gdw.setPreference('sysparm_number', g_form.getValue('number'));
 gdw.setPreference('sysparm_item', g_form.getUniqueValue());
 gdw.render();
}
Thanks,
Jag.
Please mark CORRECT/HELPFUL as needed.
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
02-27-2018 12:15 PM
Hi Trishlipe,
You can print the variables from RITM by creating a UI page, Script Include, and UI action.
Script Include: fetchVariables1, client callable = true
var fetchVariables1 = Class.create();
fetchVariables1.prototype = Object.extendsObject(AbstractAjaxProcessor, {
 itemVariables: function() {
 var itemID = this.getParameter('sysparm_item');
 var displayValue = '';
 var desc = '';
 desc += '<table style="width:100%" cellpadding="0" border="1">';
 desc += '<tr>';
 desc += '</tr>';
 var newLineHTML = '';
 var variables ='variables.'; 
 var grItem = new GlideRecord('sc_req_item');
 grItem.get(itemID);
 var gr = new GlideRecord('sc_item_option_mtom');
 gr.addQuery('request_item',itemID);
 gr.orderBy('sc_item_option.order');
 gr.query();
 var i = 0;
 while(gr.next()) {
 variables ='variables.';
 /* Put all variable values and labels from the variable pool into an array */
 /* Only include non-empty variables, and exclude Label and Container variables */
 //gr.sc_item_option.value.getDisplayValue() != '' gr.sc_item_option.value.getDisplayValue() != 'false'
 if ( gr.sc_item_option.value.getDisplayValue() != 'false' && gr.sc_item_option.item_option_new.active == true && gr.sc_item_option.item_option_new.type != 11 && gr.sc_item_option.item_option_new.type != 19 && gr.sc_item_option.item_option_new.type != 20 && gr.sc_item_option.item_option_new.type != 14 ) {
 //desc += j+") "+ v.getGlideObject().getQuestion().getLabel() + ': ' + v.getDisplayValue() + '<br>' ;
 if(gr.sc_item_option.item_option_new.question_text == 'Current Annual Base' && i%2==1){
 i++;
 }
 if(gr.sc_item_option.item_option_new.question_text == 'Current Supervisor' ){
 //i++;
 }
 if(i%2==0) {
 desc += '<tr>';
 }
 variables += gr.sc_item_option.item_option_new.name;
 displayValue = grItem.getDisplayValue(variables);
 if(displayValue==null || displayValue == undefined) {
 displayValue = '';
 }
 if(gr.sc_item_option.item_option_new.question_text == 'Comments') {
 newLineHTML += '<table style="width:100%" cellpadding="0" border="1">';
 newLineHTML += '<tr><td style="text-align:left;padding:4px;width:20%;background: #80808040;"><span style="text-align:left;font-weight:900;padding:2px" >' + gr.sc_item_option.item_option_new.question_text + '</td><td style="width:80%;padding:4px;"></span><span style="text-align:left;white-space: pre-wrap;"> ' + gr.sc_item_option.value + ' </span></td></tr></table>';
 }
 else {
 desc += '<td style="text-align:left;padding:4px;width:20%;background: #80808040;"><span style="text-align:left;font-weight:900;padding:2px" >' + gr.sc_item_option.item_option_new.question_text + '</td><td style="width:30%"></span><span style="text-align:left;white-space: pre-wrap;"> ' + displayValue + ' </span></td>';
 }
 if(i%2 == 1) {
 desc += '</tr>';
 }
 i++;
 }
 }
 desc += '</table>';
 desc += newLineHTML;
 },
 type: 'fetchVariables1'
});
UI PAge: item_variables
HTML:
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
 <link href="kb_styles.cssx" type="text/css" rel="stylesheet" />
 <div id ="html_content" style="display: none;">
 $[sysparm_item]
 </div>
<div id='printClass'>
 <div id="commentsdiv" style="display: block;">
 <h4 style="font-weight: bold;">Status Change Form for: $[sysparm_number]</h4>
 <!--<table>
 <span><label for="comments">$[sysparm_item]</label></span>
 </table> -->
 
 
 <div id="variable_data"></div>
 </div>
</div>
 <input type='button' id='btn' value='Print' onclick='printPage();'></input>
</j:jelly>
Client Script:
var ga = new GlideAjax('fetchVariables1') ;
 ga.addParam('sysparm_name','itemVariables');
 ga.addParam('sysparm_item',document.getElementById('html_content').innerHTML);
 ga.getXMLWait();
 var val = ga.getAnswer();
//alert(val);
document.getElementById('variable_data').innerHTML = val;
function printPage() 
{
var divToPrint=document.getElementById('printClass');
var newWin=window.open('','Print-Window');
newWin.document.open();
newWin.document.write('<html><body onload="window.print()">'+divToPrint.innerHTML+'</body></html>');
newWin.document.close();
setTimeout(function(){newWin.close();},10);
}
UI Action: Print Form, Table: Requested Item Onclick: printVariables()
function printVariables(){ //Client Side function
var sysid = g_form.getUniqueValue();
 
 var gdw = new GlideModal('item_variables');
 gdw.setTitle('Variables');
 gdw.setWidth(1200);
 gdw.setPreference('sysparm_number', g_form.getValue('number'));
 gdw.setPreference('sysparm_item', g_form.getUniqueValue());
 gdw.render();
}
Thanks,
Jag.
Please mark CORRECT/HELPFUL as needed.
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
02-27-2018 12:42 PM
Thank you for this information. I have a meeting with our ServiceNow Admin on Thursday. I will work with him on this and will let you know if we have any additional questions.
Trish
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
06-29-2018 07:38 AM
Hey Jag,
I tried the code above because I am working on a task that requires me to print the Variables of an RITM.
Your code prints a blank page with a header "Status change for: *RITM*"
Can you please look at your code again and see if you can modify it to make it work? That would really be helpful!
Thanks!
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
07-03-2018 10:05 AM
Hi Raza,
The code seems to work fine from my end with no issues. Could you please post your code here. I can verify it.
Best,
Jag.
