万能式钻取函数应用

10008
0

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){
    //钻取函数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(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


0个回答

只看楼主

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号