Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >salesforce 零基础开发入门学习(十五)salesforce中formula的使用(不含Date/Time)

salesforce 零基础开发入门学习(十五)salesforce中formula的使用(不含Date/Time)

作者头像
Zero-Zhang
发布于 2018-01-05 03:05:50
发布于 2018-01-05 03:05:50
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

本文参考官方的formula介绍PDF:https://resources.docs.salesforce.com/200/latest/en-us/sfdc/pdf/salesforce_useful_formula_fields.pdf

formula函数A-H:https://help.salesforce.com/apex/HTViewHelpDoc?id=customize_functions_a_h.htm&language=en_US

formula函数I-Z:https://help.salesforce.com/apex/HTViewHelpDoc?id=customize_functions_i_z.htm&language=en_US

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) 

  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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DATEVALUE( CreatedDate )

2)返回类型为Number

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IF( GoodsPrice__c > GoodsCostPrice__c , GoodsPrice__c - GoodsCostPrice__c, 0)

3)返回类型为CheckBox   

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IF( GoodsPrice__c - GoodsCostPrice__c > 50, true, false)

4)返回类型为Date/Time

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IF( !ISBLANK( LastModifiedDate ) , LastModifiedDate , CreatedDate )

5)返回类型为Text

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
( GoodsPrice__c - GoodsCostPrice__c ) / GoodsPrice__c

7)返回类型为Number

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FIND('goods', GoodsName__c )

总结:本篇主要对Formula的用法以及函数进行讲解,还有很多类型没有罗列,如果需要用到其他的计算式函数,请自行查看,Date/Time类型的Formula以及Validation Rule有机会下篇介绍,如果篇中内容有写错的地方欢迎指正,如果有问题,欢迎留言,共同探讨。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce
该文主要介绍了如何通过Rest方式获取和调用Sfdc的Rest Service,以获取Sfdc的相关数据。其中详细介绍了如何通过OAuth2.0进行身份认证,以及如何使用Java和Spring Boot技术栈进行开发。同时,文章还介绍了如何实现Sfdc的Rest Service,并提供了完整的代码示例和测试用例。通过本文的学习,读者可以快速掌握如何使用Sfdc的Rest Service进行开发,实现高效的数据交互。
Zero-Zhang
2018/01/05
2.5K0
salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce
salesforce 零基础学习(五十六)实现getById
Zero-Zhang
2018/01/05
7780
salesforce 零基础学习(五十六)实现getById
salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
该文讲述了如何利用Javascript实现一个数据分页的功能。通过获取页面中表格的每一行数据,并请求服务器进行数据筛选和排序。同时,该文也详细描述了如何在VF页面中编写对应的逻辑,并通过AJAX方式将数据返回到页面中。该文还讲述了如何为表格添加自定义排序和筛选功能,并通过示例代码进行说明。
Zero-Zhang
2018/01/05
1.8K0
salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
salesforce 零基础学习(六十)Wizard样式创建数据
项目中表之间关联关系特别多,比如三个表中A,B,C  C作为主表,A,B作为从表,有时候C表需要创建数据时,同时需要创建A,B两个表的数据,这种情况下,使用Wizard样式会更加友好。 以Goods_
Zero-Zhang
2018/01/05
9250
salesforce 零基础学习(六十)Wizard样式创建数据
Salesforce作为REST Service供java访问
有的时候我们需要在其他平台上获取sfdc端的数据,比如做android项目需要访问sfdc数据,那样就需要Salesforce作为Service,java端通过http获取并对数据进行相关操作。步骤如下:
故久
2019/09/29
7240
Salesforce作为REST Service供java访问
salesforce 零基础学习(三十七) DML及Database方法简单描述
Zero-Zhang
2018/01/05
6500
salesforce 零基础学习(三十九) soql函数以及常量
Zero-Zhang
2017/12/26
2.8K0
salesforce 零基础学习(三十九) soql函数以及常量
salesforce 零基础学习(十六)Validation Rules & Date/time
本文主要讲解了Salesforce中Formula,Validation Rules,Date/time,Date函数的用法,以及如何在社区中获取帮助。
Zero-Zhang
2018/01/05
9990
salesforce 零基础学习(十六)Validation Rules & Date/time
salesforce 零基础学习(六十四)页面初始化时实现DML操作
有的时候我们往往会遇到此种类似的需求:用户在访问某个详细的记录时,需要记录一下什么时候哪个用户访问过此页面,也就是说进入此页面时,需要插入一条记录到表中,表有用户信息,record id,sObjec
Zero-Zhang
2018/01/05
9320
salesforce 零基础学习(六十四)页面初始化时实现DML操作
salesforce 零基础学习(二十三)数据记录导出至excel(自定义报表导出)
该文介绍了在技术社区中,如何利用Apex实现导出Excel功能。首先,定义了一个数据模型用于存储表单提交的数据,然后通过在Controller中定义逻辑,实现导出Excel的功能。同时,对于数据量较大的情况,通过分页导出,并设定字段索引,从而实现了长列表的导出功能。同时,对于字段过多或者某些字段无法导出的问题,通过定制化的字段映射解决了该问题。最后,通过在页面显示导出按钮,实现了导出按钮的显示和点击功能。
Zero-Zhang
2018/01/05
1.7K0
salesforce 零基础学习(二十三)数据记录导出至excel(自定义报表导出)
salesforce 零基础学习(四十)Custom Settings简单使用
本文介绍了如何在 Salesforce 中使用 Custom Settings 实现类似白名单的功能,通过创建 Custom Setting 类型为 List 或 Hierarchy 的对象,可以限制某些用户或特定 Profile 对其进行读取和修改,从而避免一些特定用户在进行数据操作时进行校验。同时,文章也介绍了如何实现该功能的具体步骤以及相关的触发器实现和效果展示。
Zero-Zhang
2018/01/05
1.1K0
salesforce 零基础学习(四十)Custom Settings简单使用
salesforce 零基础开发入门学习(十一)sObject及Schema深入
Zero-Zhang
2018/01/05
9170
salesforce 零基础开发入门学习(十一)sObject及Schema深入
salesforce 零基础开发入门学习(十三)salesforce中JSON的使用
JSON作为一种目前流行的轻量级数据交换格式,salesforce也对其有良好的类对其进行封装处理。salesforce中前后台交互时,使用JSON可以将apex的Object对象进行序列化和反序列化
Zero-Zhang
2018/01/05
1.5K0
salesforce 零基础开发入门学习(八)数据分页简单制作
本文通过介绍如何利用Apex实现查询报表数据列表,并通过自定义控制器 PageReference 对象,实现分页、翻页、上一页和下一页功能,完成数据列表的展示和分页操作。
Zero-Zhang
2018/01/05
1.1K1
salesforce 零基础开发入门学习(八)数据分页简单制作
salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用
本文主要讲解了在Salesforce中函数的使用,包括数学函数、字符串函数、日期函数、条件函数、逻辑函数、字符串拼接函数、数组函数、JSON函数、类型转换函数、自定义函数等。同时,还介绍了函数的参数、返回值、错误处理、函数调用方式、函数调用时机等。通过本文的学习,读者可以掌握如何在Salesforce中编写自定义函数,以及如何使用内置函数和第三方函数。
Zero-Zhang
2018/01/05
1.1K0
salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用
salesforce 零基础学习(二十)简单APP制作
Zero-Zhang
2018/01/05
1.1K0
salesforce 零基础学习(二十)简单APP制作
salesforce 零基础学习(六十七)SingleEmailMessage 那点事
 在salesforce开发中,发送邮件是一个很常见的功能。比如在进入审批流以后的通过和拒绝的操作需要发送邮件给记录的owner,和其他系统交互以后更改了某些状态通知相关的User或者Contact等
Zero-Zhang
2018/01/05
1K0
salesforce 零基础学习(六十七)SingleEmailMessage 那点事
salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)
本文介绍了如何在Salesforce中通过自定义字段来实现对不同Record Type的Picklist进行设置,并对自定义字段进行了分类处理。对于在Page中通过自定义按钮实现Picklist的显示和选择,本文进行了详细阐述。同时,对于通过自定义按钮实现Picklist的显示和选择,给出了具体的示例代码。
Zero-Zhang
2018/01/05
8640
salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)
salesforce 零基础学习(十七)Trigger用法
该文章介绍了如何在Salesforce中创建自定义数据类型和自定义数据结构,以用于复杂的业务场景。同时,文章还提供了两个示例,分别是基于自定义数据类型的触发器和基于自定义数据结构的触发器。
Zero-Zhang
2018/01/05
2K0
salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
本篇知识参考:https://developer.salesforce.com/trailhead/force_com_dev_intermediate/asynchronous_apex/async
Zero-Zhang
2018/01/05
2.1K1
推荐阅读
salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce
2.5K0
salesforce 零基础学习(五十六)实现getById
7780
salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
1.8K0
salesforce 零基础学习(六十)Wizard样式创建数据
9250
Salesforce作为REST Service供java访问
7240
salesforce 零基础学习(三十七) DML及Database方法简单描述
6500
salesforce 零基础学习(三十九) soql函数以及常量
2.8K0
salesforce 零基础学习(十六)Validation Rules & Date/time
9990
salesforce 零基础学习(六十四)页面初始化时实现DML操作
9320
salesforce 零基础学习(二十三)数据记录导出至excel(自定义报表导出)
1.7K0
salesforce 零基础学习(四十)Custom Settings简单使用
1.1K0
salesforce 零基础开发入门学习(十一)sObject及Schema深入
9170
salesforce 零基础开发入门学习(十三)salesforce中JSON的使用
1.5K0
salesforce 零基础开发入门学习(八)数据分页简单制作
1.1K1
salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用
1.1K0
salesforce 零基础学习(二十)简单APP制作
1.1K0
salesforce 零基础学习(六十七)SingleEmailMessage 那点事
1K0
salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)
8640
salesforce 零基础学习(十七)Trigger用法
2K0
salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
2.1K1
相关推荐
salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验