salesforce零基础开发⼊门学习(⼗五)salesforce中formula的
使⽤(。。。
formula在object创建字段时很常见,⽐如商品表中有成本价以及售卖价,通过formula计算式可以直接⾃动计算出利润。
⼀.Formula创建
formula创建⽅式如下:
1.到需要创建Formula字段的Object,选择Custom Fields & Relationships后单击new;
2.引导页选择类型时选择Formula;
3.输⼊字段Label以及字段名称,并且选择Formula计算式的返回类型,有以下类型可以返回,后期会给出相关的sample,这⾥先选择Number;
4.输⼊计算式,这⾥包含了以下模块:
通过两个链接可以学习⼀下Formula的⽤法,涵盖全部的学习⽂档;
两种输⼊的模式,开发时经常选择Advanced Formula;
点击后可以选择sObject的field;
基本逻辑操作,例如 + - * / 等;
封装的⽅法,包括逻辑⽅法和操作⽅法;
校验语法是否正确,只有正确才能下⼀步,写完formula后必须先校验。
5.勾选相关的权限后next保存。
⼆.Formula相关操作
Formula表达式可以使⽤以下的操作或⽅法(仅写出⼀部分,详细内容参看上⽅的链接):
数学操作:包括 + - * / ^(幂)以及(),这些内容为最基本内容;
逻辑操作:包括以下的逻辑操作:
  1)==:判断两者是否相等;
  2)!=(<>):判断两者是否不等;
  3)<,<=,>,>=:⼩于、⼩于等于、⼤于、⼤于等于;
  4)&&:逻辑与,两者均为true则为true;
  5)||:逻辑或,两者有⼀个为true则为true.
字符串操作 &:⽤来连接两个字符串  eg:GoodsName & GoodsPrice 则结果输出的为两个字符串合并后的内容;
三.Formula常⽤函数
Formula内置了很多的函数,⽅便快速开发
注意:使⽤函数最好通过上图中标记5的Functions选择函数insert,⽽不是⼿动输⼊,减⼩因⼈为输⼊错误导致的问题。
1)逻辑函数:
AND:和&&操作相同,逻辑与,两者均为true则为true。
  写法:AND(logical1,logical2,...)
  sample: IF(AND(Price<1,Quantity<1),"Small", null):如果Price<1并且Quantity<1则返回结果为Small,否则为null
OR:和||操作相同,逻辑或,两者有⼀个为true则为true。
  写法:OR(logical1,logical2,...)
  sample:IF(OR(Price<1,Quantity<1),"Small", null):如果Price<1或者Quantity<1则返回结果为Small,两者均为false返回null
CASE:作⽤类似于java中的switch,case功能。当满⾜哪个值,则执⾏哪个相应结果。
  写法: CASE(expression, value1, result1, value2, result2,...,else_result)
  sample:sample⽤于通过创建的⽉份获取相应⽉的英⽂全称。
CASE( MONTH( DATEVALUE(createdDate) ),
1, "January",
2, "February",
3, "March",
4, "April",
5, "May",
6, "June",
7, "July",
8, "August",
9, "September",
10, "October",
11, "November",
12, "December",
"None")
IF:⽤于判断逻辑表达式是否正确,正确⾛正确的执⾏value,错误⾛错误的执⾏value。可以在value_if_true或者false位置嵌套第⼆层,第三层.....if语句。
  写法:IF(logical_test, value_if_true, value_if_false)
  sample:内容会在后⾯给出
ISNUMBER:校验⼀个字段的value是否为⼀个number类型,如果是返回true,否则返回false
  写法: ISNUMBER(Text)
  sample:ISNUMBER(GoodsPrice__c):返回类型为布尔类型,⽤于判断当前记录GoodsPrice__c的内容是否为number类型。
NOT:⽤于将逻辑中的true改为false,false改为true,相当于取反操作。
  写法: NOT(logical)
  sample:IF(NOT(ISPICKVAL(GoodsBrand__c, "华为")),1, 0):如果当前产品的名称不是华为则返回
1,否则返回0.
2)操作Text函数
BEGINS:判断是不是以某个指定⽂本开头,如果是返回true,不是返回false
  写法:BEGINS(⽂本, ⽐较⽂本)
  sample:IF(BEGINS( GoodsName__c ,'g'),'以g开头','不以g开头'):如果GoodsName__c字段以g开头,则返回'以g开头'
CASESAFEID:将15位ID转换成18位,18位字符更好和excel兼容。
  写法:CASESAFEID (Id)
  sample:IF( LEN(Id) != 18, CASESAFEID(Id), id)
CONTAINS:⽤于⽐较⽂本是否包含⽐较的⽂本,如果包含,返回true,不包含返回false。通常⽤于和IF⼀起使⽤。
  写法: CONTAINS(text, compare_text)
  sample: IF(CONTAINS(GoodsName__c,'goods'),'Y','N'):如果此条记录GoodsName__c包含goods字符,则返回Y,否则返回N
FIND:返回某个字符串在⽂本字符串内的位置(以数字形式表⽰)。相当于Apex中String类的indexOf函数,不过位置从1开始计算。
  写法:FIND(search_text, text [, start_num])
  sample:FIND('goods', GoodsName__c ):记录GoodsName__c字段中goods字符串在字符串中的位置,如果不存在则返回0.0返回类型为number
INCLUDES:判断多选列表中是否含某个字符串,仅限于多选列表使⽤,包含返回true,不包含返回false。
  写法:INCLUDES(multiselect_picklist_field, text_literal)
  sample:INCLUDES(Hobbies__c, "Golf"):如果爱好中包含Golf,则返回true,否则返回false。
ISPICKVAL:判断PickList当条数据是否与某个字符串相同,仅限于PickList中使⽤,相同返回true,不同返回false
  写法: ISPICKVAL(picklist_field, text_literal)
  sample: ISPICKVAL( GoodsBrand__c , '华为') :判断当条数据GoodsBrand__c字段是否为'华为'
LEFT:获取从⽂本开头算起指定长度的字符。
  写法: LEFT(text, num_chars)
RIGHT:返回从⽂本字符串右边算起的指定数量的字符。
  写法: RIGHT(text, num_chars)
  sample:LEFT(GoodsName__c, 2) &  RIGHT( GoodsName__c,3):获取GoodsName__c左数两个字符和右数三个字符的内容。&⽤于两个字符串连接
LEN:返回指定的⽂本字符串中所含的字符数。
  写法: LEN(text)
  sample:LEN(GoodsName__c):返回当前⾏GoodsName__c字段长度。
LOWER:将指定字符串中的所有字母转化成⼩写字母。
  写法: LOWER(text)
trim函数的作用是删除文本的什么空格
  sample:LOWER(GoodsName__c):返回当前⾏GoodsName__c字段内容,内容中字母转换成⼩写
TEXT:将字段转换成字符串,⽐如Date/Time,Number类型⽆法使⽤LEFT,LEN等函数,可以先将字段通过TEXT函数转换成字符串,然后再进⾏相关处理。
  写法: TEXT(value)
  sample:LEFT(TEXT(CreatedDate),3):获取CreatedDate字段左⾯三个字符串,因为CreatedDate为Date/Time类型,不能直接使⽤LEFT 函数
TRIM:删除⽂本字符串中开头和结尾的空格和制表符。
  写法:TRIM(text)
  sample:TRIM(TEXT(GoodsBrand__c))
UPPER:将指定字符串中的所有字母转化成⼤写字母
  写法:UPPER(text)
  sample:LOWER(GoodsName__c):返回当前⾏GoodsName__c字段内容,内容中字母转换成⼤写
VALUE:将⽂本字符串转换为数字,需要确保字符串中不包含除符号以及⼩数点以外的特殊符号,否则结果会返回#Error!
  写法:VALUE(text)
  sample:VALUE(GoodsPrice__c):以Number类型返回GoodsPrice__c
3)数学函数:⾃⾏查看
4)Informational 函数
IsBlank:判断表达式是否具有值,如果没有值则返回 TRUE(真)。如果它包含⼀个值,则该函数返回 FALSE(假)。IsBlank判断包含了是否为null的校验,所以在使⽤Formula或者Validation Rule时,使⽤IsBlank⽅法代替ISNULL。
  写法: ISBLANK(expression)
  sample:IF(ISBLANK(GoodsName__c),1,0):判断如果GoodsName__c不为null并且不为空,则返回1,否则返回0
BLANKVALUE:判断表达式是否具有值,如果没有值则返回⼀个置换表达式。如果表达式具有值,则返回表达式的值。简单理解类似三⽬运算。
  写法:BLANKVALUE(expression, substitute_expression)
  sample:BLANKVALUE( CreateDate__c ,  CreatedDate ) :如果CreateDate__c为空,则返回CreatedDate,否则返回CreateDate__c.
PRIORVALUE:获取记录字段前⼀个值,通常可以⽤于VALIDATION RULE以及WorkFlow中,⽐较字段前后的差距。
  写法:PRIORVALUE(field)
  sample:IF(PRIORVALUE(GoodsPrice__c)-GoodsPrice__c>10,true,false):如果GoodsPrice__c字段修改前⽐修改后⼤于10,则返回true,否则返回false
四.各种返回类型举例
1)返回类型为Date
DATEVALUE( CreatedDate )
2)返回类型为Number
IF( GoodsPrice__c > GoodsCostPrice__c , GoodsPrice__c - GoodsCostPrice__c, 0)
3)返回类型为CheckBox   
IF( GoodsPrice__c - GoodsCostPrice__c > 50, true, false)
4)返回类型为Date/Time
IF( !ISBLANK( LastModifiedDate ) , LastModifiedDate , CreatedDate )
5)返回类型为Text
IF(
( GoodsPrice__c - GoodsCostPrice__c ) / GoodsPrice__c > 0.5,
'⾼利润',
IF(
( GoodsPrice__c - GoodsCostPrice__c ) / GoodsPrice__c > 0.2,
'中利润',
IF(
( GoodsPrice__c - GoodsCostPrice__c ) / GoodsPrice__c > 0,
'低利润',
'负利润'
)
)
)
6)返回类型为Percent
( GoodsPrice__c - GoodsCostPrice__c ) / GoodsPrice__c
7)返回类型为Number
FIND('goods', GoodsName__c )
总结:本篇主要对Formula的⽤法以及函数进⾏讲解,还有很多类型没有罗列,如果需要⽤到其他的计算式函数,请⾃⾏查看,Date/Time 类型的Formula以及Validation Rule有机会下篇介绍,如果篇中内容有写错的地⽅欢迎指正,如果有问题,欢迎留⾔,共同探讨。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。