How do I print details from a RITM or SCTASK?

trishlipe
Giga Expert

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?

find_real_file.png

1 ACCEPTED SOLUTION

Jag5
Tera Guru

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. 

 

 

 

View solution in original post

32 REPLIES 32

I did not change our UI page that you posted accept i changed the words from Status Change Form for: to Print Variables for Task:. Are you sure you posted the correct UI page? I also did not change your UI Action. I did change the script include a little but i could test that with the back ground script. Using your code straight from the beginning gives the "NULL" answer on the UI page where there the variables are supposed to be listed. 

Raza156
Kilo Contributor

Hey Jag. I literally copied / pasted the exact code as you gave above and when I click the "Print Form" button on the requested items gray row, it shows me a blank page that says, "Status change for: *RITM Number*" and then its a blank page. 

 

Hi Raza,

Please download the update set and give a try.

Best,

Jag.

 

Please mark CORRECT/HELPFUL as needed. 

Jag, 

Could you please take some time to help me get this working? I have downloaded the update set that you provided.

  1. I've created a UI page variable on the catalog item with the UI page reference being "item_variables" that was added via your update set.
  2. I've submitted a test request using the catalog item
  3. I view the RITM record, and on the record there is a variable as shown below (status change for: print):find_real_file.png
  4. I click on the Print button and nothing happens. There is no print preview, no response etc. as the button doesn't do anything

Can you please help me with what I may be doing wrong? I have not modified your update set in any way:

find_real_file.png

Hi,

 

Can you please check if the UI Action is on sc_req_item table and it has no conditions?

Thanks,

Jag.