计算属性公式
已计算属性使用公式从其他属性的值中衍生自己的值。这些公式可使用属性值和文字值来计算或生成衍生的属性值。
您可以在创建计算属性的“设置特性”步骤中将公式输入到“公式”字段,或在创建属性后,通过在属性信息页面上编辑“公式”字段来输入公式。
计算公式时,如有属性值为空,则计算属性的值将显示为“(不可分配)”。您可以使用支持的 'isNull' 函数来处理这种情况。
例如,请考虑下面的公式:
((attrA == "ValueA") ? "301" : ((attrB == "ValueB") ? "302" : "303"))
如果同时为属性 (attrAattrB) 提供了值,则上述公式会计算计算属性的值。
但是,如有属性值为空,则计算属性的值将显示为“(不可分配)”。
可使用 isNull() 函数更新公式,如下所示:
((!isNull(attrA) && (attrA == "ValueA")) ? "301" : (((!isNull(attrB)) && (attrB == "ValueB")) ? "302" : "303"))
如果一个属性值为空,或两个属性值均为空,则会相应地计算上述公式。
如果属性 attrAattrB 的值均为空,则计算的值为 "303"
* 
如果在创建或编辑对象时修改了影响计算属性的属性,公式不会立即进行重新计算。一旦处理完创建操作或编辑操作,系统便会重新计算公式并更新计算属性值。
有关如何显示属性布局中所包括的计算属性的信息,请参阅属性显示
计算属性的数字结果是否本地化取决于浏览器的区域设置。
公式中的数据类型
公式中仅支持以下数据类型的属性:“字符串”“整数”“实数”“带单位的实数”“超链接”“日期和时间”以及“布尔型”。公式的结果必须与计算属性的指定数据类型相匹配,但在公式本身内可以使用不同数据类型的属性。
当公式中使用到不同数据类型的属性时,系统会在执行操作或函数之前,将不同的数据类型转换成公式中使用的操作或函数所需的同种数据类型。公式结果均为同一数据类型。数据类型转换以下列优先级顺序加以应用:
1. “字符串”- 如果公式中至少一个自变量具有“字符串”的数据类型,则所有自变量的数据类型都将转换成“字符串”。(“超链接”“日期和时间”会自动转换为“字符串”。)
2. “带单位的实数”- 如果公式中至少一个自变量具有“带单位的实数”的数据类型,则所有自变量的数据类型都将转换成“带单位的实数”
3. “实数”- 如果公式中至少一个自变量具有“实数”的数据类型,则所有自变量的数据类型都将转换成“实数”
4. “整数”- 如果公式中至少一个自变量具有“整数”的数据类型,则所有自变量的数据类型都将转换成“整数”
5. “布尔型”
例如,在公式 attrA + attrB 中,如果 attrA“字符串”数据类型而 attrB“实数”数据类型,则 attrB 会转换为“字符串”数据类型并与 attrA 合并。如果 attrA 的值为 Result:attrB 的值为 1.5,则公式的结果为 Result: 1.5
同样,如果 attrC“整数”数据类型,而 attrD“实数”数据类型,则在公式 attrC * attrD 中,attrC 会转换为“实数”数据类型,且公式的结果为“实数”数据类型。
保存计算属性时,系统会对所输入的公式求值。如果公式结果的数据类型与计算属性的数据类型不匹配,系统则会返回错误并且不保存公式。通过修改公式的指定方法,可以转换公式结果的数据类型。如下所示,<formula> 是正在转换数据类型的原始公式。
要将生成结果为“布尔型”“整数”“实数”“带单位的实数”数据类型的公式转换成“字符串”数据类型,请在“公式”字段中输入以下内容:
""+(<formula>)
要将生成结果为“布尔型”“整数”“实数”数据类型的公式转换成“带单位的实数”数据类型,请在“公式”字段中输入以下内容:
unit("1.0000000000000")*(<formula>)
(小数点后至少需要保留 13 位以保留原始结果的全精度)
要将生成结果为“布尔型”“整数”数据类型的公式转换成“实数”数据类型,请在“公式”字段中输入以下内容:
1.0*(<formula>)
要将生成结果为“布尔型”数据类型的公式转换成“整数”数据类型,请在“公式”字段中输入以下内容:
1*(<formula>
示例:计算数值
使用运算符以及属性的内部名称构建可计算所需属性值的公式。(在公式中必须使用属性的“内部名称”,而不是属性的“显示名称”。)
例如,如果存在一个“总成本”属性,它应该等于“数量”属性的值乘以“单位成本”属性的值加上“手续费”属性的值,您可以使用以下公式计算“总成本”属性的值:
(quantity*unitCost)+fee
示例:合并非数字属性值
公式还可以用于合并非数字属性值。
例如,如果创建了名为 ID 的已计算属性,可使用以下公式,将类型的“名称”属性的值和“编号”属性的值合并为 ID 属性的值:
name+"("+number+")"
这样便生成了一个 ID 属性值,如 MyDocument(0001A)
支持的函数
* 
目前,计算属性还不支持多值函数。
支持以下函数:
函数
说明
isNull()
空值检查
unit()
“字符串”数据类型转换为“带单位的实数”数据类型
str()
将数字转换为“字符串”数据类型
abs()
绝对值或模
avg()
列表值的平均值
sum()
列表值之和
min()
最小列表值
max()
最大列表值
round()
将带小数的数字 (实数) 转换为整数
如果小数包含 .5,则会将数字四舍五入至偶数 (例如,将 30.5 舍为 30,将 31.5 入为 32)
如果小数包含其他数字,则会将数字四舍五入为最接近的数字 (例如,将 30.8 入为 31,将 33.4 舍为 33)
mod()
返回一个数除以另一数的余数。(仅限“整数”数据类型)
${}
用于将包含特殊字符的属性内部名称括起来,以便将它们用于公式中。可以将所有属性内部名称括起来,但在将包含破折号 (-)、美元符号 ($) 或方括号 ([]) 的属性内部名称用于公式时,必须将其括起来。例如,需按如下形式将内部名称为 my-attributemy[very$complex]-attribute 的属性括起才能将其用于公式中:
${my-attribute}
${my[very$complex]-attribute}
如果示例:计算数值部分中所用属性的内部名称包含特殊字符,则“总成本”属性将显示为以下形式:(${item-quantity}*${unit-cost})+${handling-fee}
支持的运算符
支持以下运算符:
运算符
说明
+
加法;还可用于合并字符串
-
减法
*
乘法
/
除法
( )
圆括号,表示运算顺序中不同的优先级 (先执行括号内的运算)
" "
双引号,表示引用的内容是文字字符串。不在双引号内的任何非数字均被视为属性名称
>
大于
<
小于
>=
大于或等于
<=
小于或等于
==
等于
!=
不等于
^
幂或指数
&
|
或者
~
^*
异或
&&
||
或者
!
? :
条件运算符,表示指定条件为真或假时的结果。
(condition) ? value if true : value if false
例如,假定某个类型具有长度、宽度和形状属性,其中形状属性是使用以下公式的已计算属性:
(length>width) ? "longer" : "wider"
如果长度属性的值大于宽度属性的值,则为形状属性分配 longer 的值。如果长度属性的值不大于宽度属性的值,则为形状属性分配 wider 的值。
%
余数
这对您有帮助吗?