-
xxxl 数据领袖Lv6
发表于2021-1-22 14:34
楼主
本帖最后由 xxxl 于 2021-3-8 17:24 编辑
一、需求场景说明
在钻取时,ABI内部提供了很多种钻取函数,同时也为了方便使用,将他们设置为可视化的方式,直接在界面上设置即可,但是在一些特殊情况下,我们却需要通过万能式调用钻取函数。
例如:某表元钻取,该表元钻取方式是根据表元的值决定的,在该值<60情况下,使用钻取方式1,在>=60&<90情况下,使用钻取方式2,否则使用钻取方式3
这时候我们就需要在万能式中实现,并且,需要用到三个钻取方式的钻取函数。
获取当前表元值,在万能式中,写this.textContent,其中this代表点击的对象表元 ,textContent代表内容。
if(this.textContent<60){
if(this.textContent<60){
//钻取函数1
}else if(this.textContent>=90 && this.textContent<90){
//钻取函数2
}else{
//钻取函数3
}
二、钻取函数介绍与应用
1.跳转式钻取函数
1.1 函数体:
_zn(rpt, params,target, width, isconditions)
1.2 参数说明:
rpt 当前报表id或者代号,
params 报表参数,
target 钻取表显示位置
(self为刷新本页面显示、bottom为在下方显示、right为右侧显示、workspaceorblank为打开选项卡、blank为弹出新窗口),
width 宽度(或者高度),
isconditions 继承表元过滤条件(true为继承表元过滤条件、false为不继承表元过滤条件)。
1.3 举例:
点击进行跳转式钻取需要传递参数@cs=1、打开方式为在页面下方显示、宽度为50%、继承表元过滤条件,针对以上条件可在万能式钻取中写:
_zn('EANA$2$2$1$fb0a9c5a75fb47b3a2228ad0c9a5cbdf$f9a6cf52c4434608947723eed8edb449','@cs=1','bottom','50%','true')
2.联动式钻取函数
2.1 函数体:
_zgn(gcell, datas, captions, type, seriesTitle, maintitle, subtitle)
2.2 参数说明:
gcell 统计图控件的name ,
datas 钻取的数据 ,
captions 名称 ,
type 类型 ,
seriesTitle 系列表体 ,
maintitle 主标题 ,
subtitle 副标题
2.3 举例:
点击表元联动式钻取嵌套浮动表到HHH2统计图,拾取数据C2表元、数据名称B2表元、系列名称A2、主标题A2、副标题A2表样设计如下
针对以上条件可在万能式钻取中写:
_zgn('HHH2','<#=C2$#>','<#=B2$.select(true,@.txt)#>','','<#=A2#>','<#=A2.txt#>','<#=A2#>')
3.折叠式钻取函数
3.1 函数体:
_zrn(isexpandotherrpt, leafrpt, leafrptparams, isconditions)
3.2 参数说明:
isexpandotherrpt 是否钻取展开到其他表
leafrpt 子报表id 或者代号,
leafrptparams 钻取子表参数,
isconditions 继承表元过滤条件 ,
indentcell:缩进表元 一般是数字或表元名(数字表示折叠的位置显示在第几列,表元表示在哪个表元下折叠)
range:子表范围 可以是一个区域或表元名 (区域写法:0,1,2,2 表示钻取的子表显示的区域,一般用于固定区域 ;表元的话就是子表那个表元显示的内容,一般用于浮动区域)
3.3 举例:
折叠式钻取展开到其他表、传递参数@cs=1、继承表元过滤条件,针对以上条件可在万能式钻取中写:_zrn('true','EANA$2$2$1$fb0a9c5a75fb47b3a2228ad0c9a5cbdf$bea77483fa304c03a45b8f35a61535d5','@cs=1','true','','')
4.嵌入式钻取函数
4.1 函数体:
_zin(rpt, params,target, isconditions)
4.2 参数说明:
rpt 当前报表id或者代号 ,
params 报表参数,
target 钻取表显示位置 (这里的显示位置需要填写容器类组件或统计图组件的代号),
isconditions 继承表元过滤条件
4.3 举例:
嵌入式钻取到容器HHH3中,传递参数@cs=1,继承表元过滤条件,针对以上条件可在万能式钻取中写:
_zin('EANA$2$2$1$fb0a9c5a75fb47b3a2228ad0c9a5cbdf$ebfb275118dd43f1a64f5895d6484388','@cs=1','HHH3','true')
5.逐级式钻取函数
5.1 函数体:
_zqn( params,leafrpt, leafrptparams,isconditions)
5.2 参数说明:
params 报表参数 ,
leafrpt 子报表id 或者代号 ,
leafrptparams 钻取子表参数
isconditions 是否继承表元过滤条件 ,
5.3 举例:
逐级式钻取传递参数@cs=1,不继承表元过滤条件,针对以上条件可在万能式钻取中写:
_zqn('@cs=1','','','false')
6. 菜单式钻取函数
6.1 函数体:
_zmenun(configs)
6.2 参数说明:
configs 菜单配置(一个二维数组,每个元素都对应一个菜单项,其组成为:[菜单项的文字,事件处理函数,事件处理函数的参数1,参数2,...]。
比如:_zmenun([["钻取A1", _zq, "A1"],["钻取A3", _zq, "A3"]])。)
6.3 举例:
当某条件满足时,某指标点击后可弹出一个菜单即可选择查看"子表1"的详细情况,也可选择查看"子表2"的详细情况。针对以上条件可在万能式钻取中写:
if(1>2,"","_zmenun([['子表1',_zn, 'B28865','@cs=asd'],['子表2',_zn, 'COPYOF_B28865','@cs=qwe']])")
如上语句,第一个"[]"内表示第一个菜单项,第二个"[]"内表示第二个菜单项。
第一个"[]"中第一个参数"子表1"是菜单项的文字,第二个参数_zn表示使用的事件处理函数,第三个参数中包括了_zn()函数的所有参数。
7.外链式钻取函数
7.1 函数体:
_zun(url, target, params)
7.2 参数说明:
url 要显示的url地址,
target 钻取表显示位置
(self为刷新本页面显示、bottom为在下方显示、right为右侧显示、workspaceorblank为打开选项卡、blank为弹出新窗口),
params 报表参数
7.3 举例:
外链钻取外部url,要求在下方显示,传递参数@cs=1。针对以上条件可在万能式钻取中写:
_zun('https://www.baidu.com','bottom','@cs=1')
8.组合式钻取函数
8.1 函数体:
_zcombn(funcs)
8.2 参数说明:
funcs 需要调用的钻取函数数组,比如_zcombn([["钻取函数1"],["钻取函数2"]])
8.3 举例:
组合式钻取表元,点击表元时同时折叠式钻取展开子节点,同时热区钻取向容器HHH2传参@cs=1。针对以上条件可在万能式钻取中写:
_zcombn([["_zrn('null','','','false','','')"],["_zcalcn([['Widget1','HHH2','@cs=1']])"]])
9.热区式钻取函数
9.1 函数体:
_zcalcn(params,comparams)
9.2 参数说明:
params 报表参数,
(其中params为二维数组,每行为一个热区设置,共3列,第一列为热区标识,第二列为热区名,第三列为热区参数)
comparams 多个热区共用的参数(多个参数名值对间用分号隔开,参数名与值用等号隔开)
9.3 举例:
使用热区钻取分别给容器HHH2和HHH3传递@cs1=1和@cs2=2。针对以上条件可在万能式钻取中写:
_zcalcn([['Widget1','HHH2','@cs1=1'],['Widget2','HHH6','@cs2=2']])
10.对话框式钻取函数
10.1 函数体:
_zdlg(rpt,title,backstyle,param1,param2,ziScript,zhuScript,isSave,dlgwidth,dlgheight,btnVisbile,isconditions,grid,clickCellName)
10.2 参数说明:
rpt 报表id
title 对话框标题
backstyle 数据回写方式
(param为参数回写、data为数据回写、script为自定义脚本回写。根据回写方式的不同,参数的数量也不会相同。)
param1 参数输入
param2 参数输出
ziScript 子表脚本
zhuScript 主表脚本
isSave 点确定按钮后是否保存子表
dlgwidth 对话框的宽
dlgheight 对话框的高
btnVisbile 是否显示对话框下面的按钮
isconditions 继承表元过滤条件
grid 所选表格
clickCellName 所选表元
10.3 举例:
对话框钻取子表,对话框标题”对话框参数回写”,宽高都为600,数据回写方式为参数回写,显示对话框按钮,参数输入@sr=1参数输出@sc=1。针对以上条件可在万能式钻取中写:
_zdlg('EANA$2$2$1$fb0a9c5a75fb47b3a2228ad0c9a5cbdf$250ad327af5b4dc887dcd9b3d0b63776','对话框参数回写','param','@sr=1','@sc=1','','','false','600','600','true','WidgetTplGrid4','A1')
_zdlg('EANA$2$2$1$fb0a9c5a75fb47b3a2228ad0c9a5cbdf$250ad327af5b4dc887dcd9b3d0b63776','对话框参数回写','param','@sr=1','@sc=1','','','false','600','600','true','WidgetTplGrid4','A1')
以上例子参数对应应为_zdlg(rpt,title,backstyle,param1,param2,ziScript,zhuScript,isSave,dlgwidth,dlgheight,btnVisbile,grid,clickCellName)没有isconditions参数
三、 补充说明
以上函数只做了部分举例,实际上能应用的场景非常多,后续有更多应用钻取的案例欢迎补充。另外,在前期不太会使用这些函数的时候可以先尝试,在表元或文本等组件中设置钻取后
计算后,f12拾取该文本可查到看使用的函数。
将以上的钻取函数_zn('EANA$2$2$1$fb0a9c5a75fb47b3a2228ad0c9a5cbdf$131b562e270049c99a3320860ea62efa','@cs=1','self','50%','true','WidgetText9','HHH3')
直接放在万能式中就能使用了。
这里有万能式钻取函数综合应用场景示例的帖子https://bbs.esensoft.com/thread-138807-1-1.html