welcome to XRM blog

Keep in touch with latest CRM/ERP articles

To remain competitive your organisation must be efficient across the business process spectrum. To do so you need to take sound decisions based on a balance between the cost and risk. To do so you will be heavily dependent on your content management in itself needs...

image
Blog

How to add a report as PDF File as an Attachment in Task using JavaScript in CRM 2015/2016/D365

By Sushil on 9/25/2018

How to add a report as PDF File as an Attachment in Task using JavaScript in CRM 2015/2016/D365

 

          // This function gets the reporting session.

          function getReportingSession(){

                 var selectedIds = Xrm.Page.data.entity.getId(); 

                 var reportName = "NameofReport.rdl";

                 var reportGuid =  "00000000-0000-0000-0000-000000000000"// Replace with your report GUID

                 var pth = Xrm.Page.context.getClientUrl() + "/CRMReports/rsviewer/QuirksReportViewer.aspx";

//Note: In version 9.0, use reportviewer.aspx in place of QuirksReportViewer.aspx with.

           

                 var retrieveEntityReq = new XMLHttpRequest(); 

                 retrieveEntityReq.open("POST", pth, false); 

                 retrieveEntityReq.setRequestHeader("Accept", "*/*"); 

                 retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

                 retrieveEntityReq.send("id=%7B" + reportGuid + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&p:parameterNamespecified in ssrs report=" + selectedIds); 

                 var x = retrieveEntityReq.responseText.lastIndexOf("ReportSession="); 

                 var y = retrieveEntityReq.responseText.lastIndexOf("ControlID="); 

                 var ret = new Array(); 

                 ret[0] = retrieveEntityReq.responseText.substr(x + 14, 24); 

                 ret[1] = retrieveEntityReq.responseText.substr(x + 10, 32); 

                 return ret; 

          }

 

          // This function encodes the PDF.

          function encodePdf(ret){

                 var ret = getReportingSession();

                 var retrieveEntityReq = new XMLHttpRequest();

                 retrieveEntityReq.arguments=this.arguments;

                 var pth = window.parent.Xrm.Page.context.getClientUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + ret[0] + "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + ret[1] + "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";

                 retrieveEntityReq.open("GET", pth, true);

                 retrieveEntityReq.setRequestHeader("Accept", "*/*");

                 retrieveEntityReq.responseType = "arraybuffer";

 

                 retrieveEntityReq.onreadystatechange = function () {

                        if (retrieveEntityReq.readyState == 4){

                               if(retrieveEntityReq.status == 200) {

                                      var binary = "";

                                      var bytes = new Uint8Array(this.response);

                                      for (var i = 0; i < bytes.byteLength; i++) {

                                             binary += String.fromCharCode(bytes[i]);

                                      }

                                      var bdy = btoa(binary);

                                      createNoteWithAttachment(bdy,this.arguments);

                               }

                        }

                 };

                 retrieveEntityReq.send();

          }

  

          //Here this function attach the report as pdf in the existing task id.

          function createNoteWithAttachment(bdy){

                 var annotation = new Object();

                 var taskid = "00000000-0000-0000-0000-000000000000" //Input the task id for which you want to create the notes as pdf attachment.

                 annotation.ObjectId = {

                        Id: propertyBag.taskid,

                        LogicalName: "task"

                 };

                 annotation.Subject = "Test Subject";

                 annotation.FileName = "Test File Name";+".pdf"

                 annotation.DocumentBody = bdy;

                 annotation.MimeType = "application/pdf";

                 SDK.REST.createRecord(annotation, "Annotation", function(result) {

                        var newEntityId = result.AnnotationId;

                 }, function(error) {

                        Xrm.Utility.alertDialog(error.message);

                 });

          }

 

 

Dynamics CRM
MS CRM 2016
MSCRM V9
Author
Blog Calendar
Blog Calendar List
2018 Nov  22  3
2018 Oct  7  3
2018 Sep  13  11
2018 Aug  2  2
2018 Jun  11  1
2018 Jan  41  2
2017 Sep  348  5
2017 Aug  14  1
2017 Jul  15  2
2017 Jun  36  2
2017 May  17  1
2017 Apr  31  2
2017 Mar  104  4
2017 Feb  269  4
2016 Dec  171  3
2016 Nov  265  8
2016 Oct  197  10
2016 Sep  341  6
2016 Aug  38  1
2016 Jun  1580  6
2016 May  102  3
2016 Jan  68  2
2015 Dec  373  6
2015 Nov  3  1
2015 Oct  11  1
2015 Sep  1104  6
2015 Aug  10  1
2015 Jul  101  2
2015 Jun  7  1
2015 May  20  1
2015 Apr  21  2
2015 Mar  67  3
2015 Jan  4997  4
2014 Dec  14  1
2014 Nov  2159  4
2014 Oct  74  2
2014 Sep  95  2
2014 Aug  2847  1
2014 Jul  40  2
2014 Apr  2401  12
2014 Mar  268  19
2014 Feb  216  8
2014 Jan  1490  16
2013 Dec  21  2
2013 Nov  607  2
2013 Oct  239  3
2013 Sep  10  1
2013 Aug  29  3
2013 Jul  202  1
2013 Apr  43  6
2013 Mar  1633  10
2013 Feb  272  4
2013 Jan  244  2
2012 Nov  24  2
2012 Oct  394  10
Tag Cloud
Interested in our services? Still not sure about project details? get a quote