Salesforce 公式逻辑
Salesforce formula Logic
我正在尝试编写一个计算金额的公式,但如果 serviceFee 字段有值,它将使用该值。
所以
Field1 = Amount
Field2 = ServiceFee
如果服务费有值,金额必须等于服务费
如果任何 ClientTypes 匹配,公式将不会查看 ServiceFee
我试过部署这个,但公式似乎只执行 ServiceFee 部分
IF(ClientType.Id = '123456',
Amount- Discount,
IF(ClientType.Id = '7891011',
Amount + 1,
IF(NOT(ISBLANK(ServiceFee)),
Amount = ServiceFee,
)
)
)
问题是您试图在最后一条语句中为 Amount
赋值,这在公式语法中不起作用。它不会编译,因为它实际上被解析为比较语句(returning 一个布尔值)。
相反,首先确定公式应该是什么 return。如果您有多个客户端 ID,请尝试 CASE
函数。这样就很清楚每种情况下会发生什么。例如:
CASE(ClientType.Id,
'123456', Amount - Discount,
'7891011', Amount + 1,
IF(ISBLANK(ServiceFee), 0, ServiceFee)
)
最后一个参数是 CASE
函数的默认值,如果 ClientType.Id
不是之前的任何一个值,将对其进行计算。
我正在尝试编写一个计算金额的公式,但如果 serviceFee 字段有值,它将使用该值。
所以
Field1 = Amount
Field2 = ServiceFee
如果服务费有值,金额必须等于服务费
如果任何 ClientTypes 匹配,公式将不会查看 ServiceFee
我试过部署这个,但公式似乎只执行 ServiceFee 部分
IF(ClientType.Id = '123456',
Amount- Discount,
IF(ClientType.Id = '7891011',
Amount + 1,
IF(NOT(ISBLANK(ServiceFee)),
Amount = ServiceFee,
)
)
)
问题是您试图在最后一条语句中为 Amount
赋值,这在公式语法中不起作用。它不会编译,因为它实际上被解析为比较语句(returning 一个布尔值)。
相反,首先确定公式应该是什么 return。如果您有多个客户端 ID,请尝试 CASE
函数。这样就很清楚每种情况下会发生什么。例如:
CASE(ClientType.Id,
'123456', Amount - Discount,
'7891011', Amount + 1,
IF(ISBLANK(ServiceFee), 0, ServiceFee)
)
最后一个参数是 CASE
函数的默认值,如果 ClientType.Id
不是之前的任何一个值,将对其进行计算。