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
2020 Jul  8  1
2020 Jun  13  3
2020 Apr  10  3
2020 Mar  11  2
2020 Feb  22  5
2020 Jan  22  7
2019 Dec  15  4
2019 Nov  11  1
2019 Jan  31  3
2018 Dec  31  4
2018 Nov  66  3
2018 Oct  12  3
2018 Sep  208  11
2018 Aug  6  2
2018 Jun  11  1
2018 Jan  53  2
2017 Sep  550  5
2017 Aug  17  1
2017 Jul  17  2
2017 Jun  51  2
2017 May  21  1
2017 Apr  32  2
2017 Mar  118  4
2017 Feb  417  4
2016 Dec  177  3
2016 Nov  375  8
2016 Oct  242  10
2016 Sep  362  6
2016 Aug  39  1
2016 Jun  1760  6
2016 May  104  3
2016 Jan  70  2
2015 Dec  392  6
2015 Nov  4  1
2015 Oct  13  1
2015 Sep  1330  6
2015 Aug  13  1
2015 Jul  126  2
2015 Jun  10  1
2015 May  20  1
2015 Apr  28  3
2015 Mar  78  3
2015 Jan  5205  4
2014 Dec  17  1
2014 Nov  2217  4
2014 Oct  63  1
2014 Sep  106  2
2014 Aug  4075  1
2014 Jul  46  2
2014 Apr  2460  12
2014 Mar  288  19
2014 Feb  237  8
2014 Jan  1510  16
2013 Dec  21  2
2013 Nov  636  2
2013 Oct  250  3
2013 Sep  11  1
2013 Aug  38  3
2013 Jul  207  1
2013 Apr  49  6
2013 Mar  1843  10
2013 Feb  306  4
2013 Jan  262  2
2012 Nov  34  2
2012 Oct  450  10
Tag Cloud
Interested in our services? Still not sure about project details? get a quote