
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2020 12:37 AM
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 :
I am getting some help from one thread but its not working
Thanks in advance.
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2020 01:56 AM
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);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2020 01:56 AM
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);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2020 03:32 AM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2020 09:23 PM
sorry for late response.
just confirming , did you check the record in "ecc_queue" table ? what exactly are you getting in payload column ?
i did not test that script. i will try to test on my personal instance.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2020 11:35 PM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2020 11:43 PM
thats the reason it's showing the error, because payload has not any content and file seems like to be corrupted.
quick question, did you try with rest message? is it not fulfilling your requirement ? i think that will also work for your scenario. i would suggest give a try.