URL Hacking之动态report条件

上回书说道(《salesforce的field-id与url-hack》),URL Hacking可以用来跳转到指定的页面与设定新建页面的default值。

除此之外,URL Hacking还可以用来改变report的条件。
比如说,有这样的业务场景————客户想知道当前访问的Lead都被哪些特定种类Campaign纳入为Campaign Member。
有的同学说了,这个简单啊,不就是Releted List嘛,我知道。
但是,由于Releted List无法进行过滤筛选,所以所有种类的Campaign信息都混在了一起,客户不矫情的话也许勉强凑合着用了。

除了做VF页面之外,还可以使用URL Hacking来实现。
首先,在Lead的详细画面上放一个custom link,点击之后打开一个Campaign Member的report。
然后设置好report的Show范围为“All Campaigns”,如果是其他report,还要设定好时间范围。
只要实现每次点击custom link跳转到report时候,都能动态的设置campaign的record type与当前lead的Id,就可以实现。

// 接下来是重点

写进custom link的URL该如何准备?

格式如下
https://[instance name/custom domain.my].salesforce.com/[Report Id]?[Parameters]

例子:
https://ap4.salesforce.com/00O6F00000BCoNC?pc0=0726F000005wyMg&pn0=eq&pv0=&pc1=0726F000005wyMl&pn1=eq&bool_filter=1 OR 2

效果如下图

Parameter部分需要用到四种参数
条件的key = pcX
条件的operator = pnX
条件的value = pvX
逻辑运算规则 = bool_filter
X的范围为1到23,所有参数依次使用&连接。

设定条件的时候,条件生效的最低标准是有key和operator。
但是,如果report已经存在一个条件,可以单独设定key,operator,value中的任意一个或者多个。
?pc0=0726F000005wyMg&pn0=eq&pv0=0123456

如果是设定多个条件,则按照pc0,pn0,pv0,pc1,pn1,pv1的方式进行拼接。
如果不指定逻辑运算规则,则是默认按照AND进行逻辑运算。指定的方式为….&bool_filter=1 OR 2 AND 3
?pc0=CAMPAIGN_STATUS&pn0=eq&pv0=Completed&pc1=ACTIVE&pn1=eq&pv1=1&bool_filter=1 OR 2

关于条件的key值,要分为两种情况
1. 使用标准report type创建的report
标准字段需要设定为Field Name 如:CAMPAIGN_STATUS, CASE_NUMBER
自定义字段需要设定为Field Id(获取方式在上一篇提到过),当然在Field定义页面的URL中也可以获取到。样子为00N开头的15位或者18位ID。
2. 使用自定义report type创建的report
无论是标准字段还是自定义字段,都需要设定为reporttype field ID。样子为072开头的15位或者18位ID。

无论是哪种情况,都可以使用下面的获取方法
1.将想要动态设定的条件先设定到report上,保存
2.Run Report
3.在report页面按F12打开开发者控制台 或者 在页面上点击右键-》查看源代码
4.检索pc0,value即为key值。

最后,我们将组装完毕的URL写进Custom Link,将custom link放到layout上,大功告成。
https://ap4.salesforce.com/00O6F00000BCoTj?pc0=MEMBER_ID&pn0=eq&pv0={!Lead.Id}

说一千道一万,URL Hacking仅限于Classic使用。等有一天Lightning普及之后,这些奇淫巧技都没了用处了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据