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
2024 Nov  4  1
2024 Aug  5  1
2024 Apr  45  4
2024 Mar  129  4
2024 Feb  233  3
2024 Jan  29  7
2023 Dec  30  6
2023 Nov  357  5
2023 Oct  479  12
2023 Sep  1209  9
2023 Aug  318  6
2023 Jul  47  6
2023 Jun  26  4
2023 May  44  5
2023 Apr  67  5
2023 Mar  183  6
2023 Feb  158  5
2023 Jan  66  4
2022 Dec  95  7
2022 Nov  282  2
2022 Sep  13  1
2022 Aug  32  2
2022 Jun  11  2
2022 May  6  2
2022 Apr  12  2
2022 Mar  2  1
2022 Feb  2  1
2022 Jan  1  1
2021 Dec  4  1
2021 Nov  2  1
2021 Oct  2  1
2021 Sep  14  1
2021 Aug  49  5
2021 Jul  50  4
2021 Jun  1663  5
2021 May  41  3
2021 Apr  2202  3
2021 Mar  208  5
2021 Feb  2562  7
2021 Jan  3779  9
2020 Dec  522  7
2020 Sep  80  3
2020 Aug  767  3
2020 Jul  134  1
2020 Jun  93  3
2020 Apr  90  3
2020 Mar  19  2
2020 Feb  34  5
2020 Jan  47  7
2019 Dec  17  4
2019 Nov  38  1
2019 Jan  23  2
2018 Dec  110  4
2018 Nov  68  3
2018 Oct  18  3
2018 Sep  1222  11
2018 Aug  7  2
2018 Jun  18  1
2018 Jan  70  2
2017 Sep  588  5
2017 Aug  17  1
2017 Jul  17  2
2017 Jun  64  2
2017 May  21  1
2017 Apr  38  2
2017 Mar  138  4
2017 Feb  830  4
2016 Dec  207  3
2016 Nov  918  8
2016 Oct  318  10
2016 Sep  773  6
2016 Aug  39  1
2016 Jun  1883  6
2016 May  112  3
2016 Jan  72  2
2015 Dec  645  6
2015 Nov  4  1
2015 Oct  13  1
2015 Sep  1471  6
2015 Aug  14  1
2015 Jul  129  2
2015 Jun  11  1
2015 May  20  1
2015 Apr  30  3
2015 Mar  80  3
2015 Jan  5344  4
2014 Dec  17  1
2014 Nov  2260  4
2014 Oct  69  1
2014 Sep  107  2
2014 Aug  5320  1
2014 Jul  49  2
2014 Apr  2592  12
2014 Mar  303  17
2014 Feb  222  6
2014 Jan  1510  16
2013 Dec  21  2
2013 Nov  693  2
2013 Oct  256  3
2013 Sep  11  1
2013 Aug  40  3
2013 Jul  214  1
2013 Apr  61  6
2013 Mar  2357  10
2013 Feb  131  3
2013 Jan  350  2
2012 Nov  61  2
2012 Oct  518  10
Tag Cloud
Interested in our services? Still not sure about project details? get a quote