下钻传参问题排查(以JS导出为例)
下钻传参设置
问题排查
下钻出现问题时,按顺序检查:
- 参数获取 - 打印参数是否正确获取
- 参数名称 - 下钻加密处参数名是否写错
- 公式语法 - 公式是否写错
- 链接解密 - 下钻链接解密后是否有参数传达
代码示例
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需要进行编码处理


浙公网安备 33010602011771号