i want to create a one PDF file for incident record and that pdf file will attach to same incident record.

Sanjay Bagri1
Tera Guru

Hi 

i want to create a one PDF file for incident record and that pdf file will  attach to same incident record. Is there any way to do.

Please can you suggest me where i am wrong,

This is the Script Which i am Using in Workflow after insert business rules: 

(function executeRule(current, previous /*null when async*/) {

	// 	attachment.write('tablename', recordsysid, fileName, content_type, fileDate);

	// "attachment" is the object variable of Attachment() type

	// "tablename" is string variable that contains the name of the table where you want to attach the file.

	// "recordsysid" is the sys id of the record where you want to attach the file

	// "filename" is the file name of the attachment

	// "content_type" is the type of content in the file (usually for pdf it is 'text/text')

	// "fileData" contains the data that you want to put in the file.

	// Example: Business Rule to run after insert

	var tableName = "incident"; //incident Item Table
	gs.addInfoMessage("Table Name :"+tableName);
	var recordsysid = current.sys_id; //sys id of the record
	gs.addInfoMessage("RecordSysID :"+recordsysid.getDisplayValue()   +"   ==  "+recordsysid);
	var fileName = current.number+" FormData.pdf";
	gs.addInfoMessage("file Name :"+fileName);
	var content_type = 'text/pdf';
	gs.addInfoMessage("content_type :"+content_type);


	var fileData=""; // Declare an empty string 

	fileData+=current.number+" "+current.short_description+"</ b>";           // current access the varibles in the record

	//fileData+=current.variables.u_requested_for.getDisplayValue()+"</ b>";    // current.variables access the variables or fields in the form or catalog Item
	fileData+=current.state+"</ b>";
	fileData+=current.variables.u_department.getDisplayValue();

	gs.addInfoMessage("File Data  :"+fileData);

	var attachment = new Attachment();

	attachment.write('tablename', recordsysid, fileName, content_type, fileDate);


})(current, previous);

I am getting these values but not attaching the Attachments in the records : 

find_real_file.png

I am getting some help from one thread but its not working

https://community.servicenow.com/community?id=community_article&sys_id=d947860cdbbe1380e0e80b55ca961...

Thanks in advance.

1 ACCEPTED SOLUTION

rest message should also fulfill this requirement. 

 

try with below code. 

Script include:

 

var CreateAttachments = Class.create();
CreateAttachments.prototype = {
	initialize: function() {
	},

	creatAttch: function(name,contentType, data){



		var attCreator = new GlideRecord('ecc_queue');
		attCreator.agent = "AttachmentCreator";
		attCreator.topic = "AttachmentCreator";
		attCreator.name =   "pdf" + ":" + contentType;
		attCreator.source = current.getTableName()+":"+current.sys_id;
		attCreator.payload = data;
		attCreator.insert();
	},



	type: 'CreateAttachments'
};

 

Business rule:

 

(function executeRule(current, previous /*null when async*/) {



	var fileName = current.number+" FormData.pdf";
	var fileData=""; // Declare an empty string 

	fileData+=current.state+"</ b>";
	fileData+=current.short_description.getDisplayValue();
	var ab = new CreateAttachments().creatAttch(fileName,'application/pdf', fileData);


})(current, previous);

 

 

View solution in original post

17 REPLIES 17

Prasant Kumar 1
Kilo Sage

Hi,

1. Create  before insert business rule And follow the below code to proceed.

 

var gr = new GlideRecord ('incident');

 

gr.addQuery('sys_id',current.sys_id);

 

gr.query();

 

if(gr.next()){\

var rm = new sn_ws.RESTMessageV2();
      rm.setHttpMethod('GET');
      var url = gs.getProperty("glide.servlet.uri") + current.getTableName()+ '.do?PDF&sys_id=' + current.sys_id;
      rm.setEndpoint(url);
      rm.setBasicAuth(gs.getProperty('glide.user.userid'), gs.getProperty('glide.user.password'));
      rm.saveResponseBodyAsAttachment(gr.getTableName(),gr.sys_id,current.number+".pdf");
      var response = rm.execute();

}

 

If i was able to solve your query please mark my answer correct and helpful.

Thanks & Regards

Prasant kumar sahu

 

this is the my requirements :

I don't want to share this PDF. Just when i will create new incident then simultaneously create PDF file for that record and attach to the same record as a attachment.

 

Harsh Vardhan
Giga Patron

have you tried using rest message ? i did that for one of my client and i used rest message here. 

 

kindly have a look on below link. 

 

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

Hi Harsh,

I don't want to share this PDF. Just when i will create new incident then simultaneously create PDF file for that record and attach to the same record as a attachment.