Javascript 如何在Dynamics CRM 2013中执行报告以在线模式和离线模式生成PDF

Javascript 如何在Dynamics CRM 2013中执行报告以在线模式和离线模式生成PDF,javascript,dynamics-crm-2011,dynamics-crm,crm,dynamics-crm-2013,Javascript,Dynamics Crm 2011,Dynamics Crm,Crm,Dynamics Crm 2013,有人能帮我吗!!! 我在实体报价中有一个自定义按钮,用于从报告生成PDF文件。 如果CRM是联机的,它就可以完美地工作,但是一旦我切换到outlook作为脱机模式 它不起作用。因为它没有获取会话id和控件id var pth=""; if(IsOnline) { pth= Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx"; }

有人能帮我吗!!! 我在实体报价中有一个自定义按钮,用于从报告生成PDF文件。 如果CRM是联机的,它就可以完美地工作,但是一旦我切换到outlook作为脱机模式 它不起作用。因为它没有获取会话id和控件id

var pth="";
        if(IsOnline)
        {
        pth= Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
        }
        else
        {
        pth= " http://localhost:2525/crmreports/viewer/viewer.aspx";
        }
        var retrieveEntityReq = new XMLHttpRequest();
        var Id = Xrm.Page.data.entity.getId();
        var quotationGUID = Id.replace('{', ""); //set this to selected quotation GUID
        quotationGUID = quotationGUID.replace('}', "");
        var reportName = "Quote"; //set this to the report you are trying to download
        var reportID = "6A39D18F-2EC6-E344-8986-F49D6765A723"; //set this to the guid of the report you are trying to download
        var rptPathString = ""; //set this to the CRMF_Filtered parameter
        var strParameterXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='quote'><all-attributes /><filter type='and'><condition attribute='quoteid' operator='eq' uitype='quote' value='" + quotationGUID + "' /> </filter></entity></fetch>";
        retrieveEntityReq.open("POST", pth, false);
        retrieveEntityReq.setRequestHeader("Accept", "*/*");
        retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        rptPathString = "id=%7B" + reportID + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" +
        reportName + "&isScheduledReport=false&p:CRMAF_Filteredquote=" + strParameterXML;
        //remove the part starting from &p:salesorderid if your report has no parameters
        retrieveEntityReq.send(rptPathString);
        var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
        var ret = new Array();
        ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
        x = retrieveEntityReq.responseText.indexOf("ControlID=");
        ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id

        return ret;
var pth=”“;
if(IsOnline)
{
pth=Xrm.Page.context.getServerUrl()+“/CRMReports/rsviewer/reportviewer.aspx”;
}
其他的
{
pth=”http://localhost:2525/crmreports/viewer/viewer.aspx";
}
var retrieveEntityReq=新的XMLHttpRequest();
var Id=Xrm.Page.data.entity.getId();
var quotationGUID=Id.replace('{','');//将其设置为选定的报价GUID
quotationGUID=quotationGUID.replace('}',“”);
var reportName=“Quote”//将此设置为您尝试下载的报告
var reportID=“6A39D18F-2EC6-E344-8986-F49D6765A723”//将此设置为您尝试下载的报表的guid
var rptPathString=“”//将此设置为CRMF_过滤参数
var strParameterXML=“”;
retrieveEntityReq.打开(“POST”,pth,false);
retrieveEntityReq.setRequestHeader(“接受”,“*/*”);
retrieveEntityReq.setRequestHeader(“内容类型”、“应用程序/x-www-form-urlencoded”);
rptPathString=“id=%7B”+reportID++%7D&uniquename=“+Xrm.Page.context.getOrgUniqueName()+”&iscustomreport=true&reportnameonsrs=&reportName=”+
reportName+“&isScheduledReport=false&p:CRMAF_Filteredquote=“+strParameterXML;
//如果报表没有参数,请删除从&p:salesorderid开始的部分
retrieveEntityReq.send(rptPathString);
var x=retrieveEntityReq.responseText.indexOf(“ReportSession=”);
var ret=新数组();
ret[0]=retrieveEntityReq.responseText.substr(x+14,retrieveEntityReq.responseText.indexOf(“&”,x)-x-14)//会话id
x=retrieveEntityReq.responseText.indexOf(“ControlID=”);
ret[1]=retrieveEntityReq.responseText.substr(x+10,retrieveEntityReq.responseText.indexOf(“&”,x)-x-10)//控件id
返回ret;

您应该尝试在outlook中调试脚本,如果您签入ie的“高级”选项,您应该能够打开调试器并查看脚本的运行情况。是否有此问题的更新或解决方案??