方式一:在元数据中配置穿透超链接
此方式支持直接在元数据配置中进行穿透超链接添加,不受excel或WPS本身超链接特性的影响,也不需要对URL进行转码,较为快捷方便
1、在excel模板中,找到需要设置穿透的单元格,右键-编辑超链接,编辑超链接meta.key,图中示例的key为D5
2、模板编辑完成后,在报表高级设置中配置
"meta_hyper_link_context": {
"key": "想跳转的超链接"
}
例如:
报表穿透配置为弹窗
还是原来的超链接配置方式:
比如http://emp_list/model=EmployeeAll&page_size=20&page_index=1&tree_id=13613154&effect_date=2021-08-11&advance_filter_dict=%7badvance_filter_dict%7d
如果要配置为弹窗的话:
场景改为model_list_dialog即可
http://model_list_dialog/?model=Employee&key1=value1&key2=value2
方式二:原来的配置方式报表穿透
养成读文档的好习惯,是提升自己的最佳途径!
文档更新有时候不及时,文档或有遗漏!
各位查看文档有写的不清楚,不明白,遗漏的地方,请在下面直接备注,方便修改文档及帮助后来的老师理解文档。
谢谢合作!
1.穿透分类
类别 | url的state |
---|---|
表穿透到另外一张表 | flex_report |
表穿透到另外的页面(非表) | 不定(非flex_report) |
2.穿透设置(excel超链接)
提供2016版本的EXCEL下载 excel2016
数据穿透的实质:从当前页面点击数字或其他跳转到其他页面(所以穿透时需要知道穿透界面的url链接,不知道一定会失败)
必看特殊注意事项!:
url转码地址: url转码
- 特殊字符要替换:
- 比如@符号改为 %40
- 也可采用编码的方式
- 先全部解码,使链接中没有%40这种url字符(俗称百分号编码)
- 再进行编码(不可编码后二次编码,可以在转码链接点两下编码体验一下二次编码有什么结果~)
- 因为第三步的替换可能出现 {} 嵌套的情况,导致超链接设置不成功,可以对url进行编码(步骤依然是:先解码-再编码,别多点了~)
- 界面的state是 common_model_view/multi时,要改成 common_model_view_multi。(将/替换为_)
多选类型参数动态替换:
假设 selected_emps是我们报表的一个过滤器key
想做如下超链接动态设置:http://flex_report?report=employee_analysis?filter=emps:{selected_emps}
emps改为:emps:{selected_emps} => emps:%7bselected_emps%7d
将{和}替换即可
替换后:http://flex_report?report=employee_analysis?filter=emps:%7bselected_emps%7d
对于无法保存的超长链接处理技巧:
在分析报表的meta_info中自定义,如下所示:
如此,在超链接中即可使用{link1}来代替长文本,用advance_xxxx来代替嵌套字典
除了要求外层必须取名叫meta_hyper_link_context以外
里面的键不限制取名,但是建议不要和正常上下文冲突。
3.参数的传递(重点)
报表穿透的url链接中,通常情况下都是有参数传递的。
可传递参数的分类:
固定的参数,例如:跳转到查询人员界面,固定查是正式员工的员工,就在url中直接写死是正式员工即可,这种类型不需要花括号包裹,因为没有做数据替换
报表选择器的参数,例如:有个选择器是组织选择器,跳转到查询人员界面,过滤是这个组织的人,用选择器的key代替filter_dict中组织id,这里直接用{CURRENT_DEPARTMENT}代替组织id即可
块数据中的参数,例如:这类型的参数有且只能在数据块的行中使用。如要传递 部门id就在url中写 {position.parent.id},人员id就写 {id}
需要公式计算的参数, 这种需要在meta_hyper_link_context内设置一个inner_context并定义一个新的变量来接收公式,然后在对应的超链接里面通过{变量名}传参
例:根据行中月份取上年末日期
{ "meta_hyper_link_context": { "inner_context": { "last_year_day": "=YEAR_END(month_=D_S({month}, -1))" }, "A2": "http://common_model_list?model=test_log&filter_dict={}&page_index=1&page_size=20&advance_filter_dict={'date_field':{'eq':'{last_year_day}'}}" } }
特别注意:有这样的场景,穿透的界面要一个 数值型字符串('12345'),得到的数据是数值(12345) ,url链接中要这样写 '{num}',传字符串和穿透界面保持一致
报表定义示例
1 |
|
块数据返回值(有删减)
1 |
|
4.被穿透报表相关设置
- 被穿透报表自动计算需加入参数
- immediately: true
- auto_recalc_time: 300
- auto_recalc_time参数:
- 单位:秒
- 默认自动重算时间:7 * 24 * 3600 (超过一周打开自动重算)
5. 穿透配置打开新标签页
{ "configs": { "hyper_link_config": { "open_new_page": true } } }