下钻传参问题排查(以JS导出为例)

下钻传参设置

问题排查

下钻出现问题时,按顺序检查:

  1. 参数获取 - 打印参数是否正确获取
  2. 参数名称 - 下钻加密处参数名是否写错
  3. 公式语法 - 公式是否写错
  4. 链接解密 - 下钻链接解密后是否有参数传达

代码示例

JS下钻写法参考示例

// 获取参数值  参数面板上按钮中使用,获取参数面板上控件的值。
var para1 = this.options.form.getWidgetByName("控件名").getValue();  
var p_paralist = this.options.form.getWidgetByName("p_paralist").getValue();

// 构建链接 以下是特殊处理的,不必一定要写成一样的,根据实际场景调整为合适链接即可。
var process_url = workflow_url + platform + '/workFlowAction/drill?platRepId=' + p_report_id + '&parm=' + p_paralist;

// 执行跳转
window.location = encodeURI(process_url);

其中有参数加密设置,加密串参数:添加文本控件 p_paralist,取值使用sql()函数进行加密

导出是还需要加以下参数

  • &format=excel&extype=simple
  • &__filename__=导出时的文件名

一般导出Excel

// 其中cjkEncode 是为了防止中文乱码的
window.open(FR.cjkEncode("${servletURL}?viewlet=/订单明细表.cpt&订单号=" + ID + "&format=excel"));


// 也可以参考这个,JS实现导出文件名随筛选值变化的写法,用 encodeURI,理论上应该一个就够了,帮助文档里面常常写两次。
// widow.open() 和 window.location = 是等效的。
var DIQU = _g().getParameterContainer().getWidgetByName("Diqu").getValue();
var RIQI = _g().getParameterContainer().getWidgetByName("Riqi").getValue();
var REPORT_URL = '${servletURL}?viewlet=11-JS实现自定义导出文件名称-方法一.cpt&Diqu=' + DIQU + '&Riqi=' + RIQI + '&format=excel';
window.location = (encodeURI(encodeURI(REPORT_URL)));


//让我们再看一个实例,加深一下印象:JS实现预定义导出按钮。 

// 参数如下:
// servletURL:公式servletURL
// reportName:公式reportName
// exportName:公式indexofarray(split(indexofarray(REVERSEARRAY(split(reportName,"/")),1),".c"),1)+"_"+format(now(),"yyyyMMddHHmm"),此处自定义文件名。

//定义报表URL,通过内置参数 servletURL、reportName 获取对应模板的路径和名称
var url=servletURL+"?viewlet="+reportName;
//遍历参数面板控件,获取对应的参数值。
$.each(this.options.form.name_widgets,function(i,item) {
      if(item.options.type!== 'label'&&item.getName()!="PARA"&&item.getName()!="SEARCH"&&item.getName()!="EXPORT") {
      url+="&"+item.getName()+"="+item.getValue();
    }
});
//在URL上加上打印参数
url+="&format=excel&extype=simple&__filename__="+exportName;
window.location=encodeURI(encodeURI(url));//转码导出

注意事项

  • 参数名区分大小写
  • URL需要进行编码处理
posted @ 2025-06-01 16:55  灯熄帘摇月候身  阅读(11)  评论(0)    收藏  举报