跳到主要内容

默认值配置

默认值配置用于控制字段如何获得初始值或重新计算后的值。支持的字段类型在新建和编辑字段弹窗中会显示该配置。

当字段可以通过固定输入、关联记录、当前日期或读取其他字段的公式预填时,可以使用默认值配置。

编号、汇总、动态计算、辅助文本字段不显示默认值配置。

如何使用​

  1. 打开表单的 字段设计
  2. 新建或编辑一个支持默认值的字段
  3. 在 默认值 中选择模式
  4. 选择默认值的应用时机
  5. 填写字面量值或公式表达式
  6. 保存字段

模式​

模式说明
无不配置默认值
字面量使用在编辑器中固定录入或选择的值
公式通过公式表达式计算默认值

应用时机​

应用时机说明
创建时新建记录时应用默认值
仅为空时只有字段为空时才应用默认值
依赖变更时依赖值变化后重新计算;该选项只在公式模式下可用

字面量值​

字面量模式会根据字段类型显示不同的编辑器。

字段类型字面量编辑器
文本、长文本、邮箱、链接文本输入框
数字数字输入框
开关开关状态
单选下拉、单选一个已配置选项
多选下拉、复选一个或多个已配置选项
关联搜索、多选关联、外键从已配置的来源表单中选择记录
部门、组织组织结构选择器
日期、周、月、季度、年日期选择器
日期时间日期时间选择器
时间时间选择器
数组和对象数据暂不支持字面量编辑;可以使用公式模式,或不设置默认值

公式模式​

公式模式通过表达式计算默认值。

工具说明
插入函数向表达式中插入支持的公式函数
插入字段向表达式中插入字段引用;字段引用格式为 FIELD("api_name")
公式表达式返回默认值的表达式
解析展示表达式的解析结果
公式试算选择当前表单的一条记录,用真实数据测试公式

公式返回结果必须匹配当前字段的数据类型。例如,数字字段应返回数字,开关字段应返回布尔值。

公式函数​

函数用法说明
FIELDFIELD("api_name")按 API 名称读取其他字段的值
IFIF(condition, whenTrue, whenFalse)根据布尔条件返回两个值中的一个
COALESCECOALESCE(valueA, valueB, ...)返回第一个非空值
CONCATCONCAT(valueA, valueB, ...)拼接多个字符串值
TRIMTRIM(value)移除字符串首尾空白
REPLACEREPLACE(value, "old", "new")将字符串中的部分内容替换为另一个值
SUBSTRINGSUBSTRING(value, start, length)返回字符串的一部分
LENGTHLENGTH(value)返回字符串或类字符串值的长度
NOWNOW()返回当前日期时间
TODAYTODAY()返回当前日期
FORMAT_DATEFORMAT_DATE(value, "YYYY-MM-DD")将日期或日期时间格式化为文本
ADD_DAYSADD_DAYS(value, 1)对日期类值增加或减少天数
ADD_HOURSADD_HOURS(value, 1)对日期时间值增加或减少小时
ADD_MINUTESADD_MINUTES(value, 30)对日期时间或时间值增加或减少分钟
DATE_DIFFDATE_DIFF(valueA, valueB, "days")返回两个日期类值之间的差值
ROUNDROUND(value, 2)将数字值按固定精度四舍五入
ABSABS(value)返回数字的绝对值
MINMIN(valueA, valueB, ...)返回多个数字中的最小值
MAXMAX(valueA, valueB, ...)返回多个数字中的最大值
FLOORFLOOR(value)将数字向下取整
CEILCEIL(value)将数字向上取整
TO_STRINGTO_STRING(value)将值转换为字符串结果
TO_NUMBERTO_NUMBER(value)将值转换为数字结果
TO_BOOLEANTO_BOOLEAN(value)将值转换为布尔结果
UPPERUPPER(value)将字符串结果转换为大写
LOWERLOWER(value)将字符串结果转换为小写
IS_EMPTYIS_EMPTY(value)检查值是否为空
ANDAND(valueA, valueB, ...)当所有值都为真值时返回 true
OROR(valueA, valueB, ...)当任一值为真值时返回 true
NOTNOT(value)对布尔值取反
EQEQ(valueA, valueB)检查两个值是否相等
GTGT(valueA, valueB)检查第一个值是否大于第二个值
GTEGTE(valueA, valueB)检查第一个值是否大于或等于第二个值
LTLT(valueA, valueB)检查第一个值是否小于第二个值
LTELTE(valueA, valueB)检查第一个值是否小于或等于第二个值
UUIDUUID()返回生成的唯一标识字符串

公式示例​

场景目标字段类型公式
用当天日期生成展示编码文本CONCAT("NO-", FORMAT_DATE(TODAY(), "YYYYMMDD"))
默认复制客户名称文本FIELD("so_customer_name")
联系人为空时使用客户名称文本COALESCE(FIELD("so_contact_name"), FIELD("so_customer_name"))
计算含税金额数字ROUND(FIELD("so_amount") * 1.13, 2)
把评分限制在范围内数字MIN(MAX(FIELD("so_score"), 0), 100)
判断金额是否较高开关GTE(FIELD("so_amount"), 10000)
开始日期后 7 天作为截止日期日期ADD_DAYS(FIELD("so_start_date"), 7)
当前时间后 2 小时作为提醒时间日期时间ADD_HOURS(NOW(), 2)
把日期格式化成文本文本FORMAT_DATE(FIELD("so_due_date"), "YYYY-MM-DD")
生成随机标识文本UUID()

校验​

公式编辑器会在保存前检查常见问题。

问题含义
括号不匹配左括号和右括号必须成对出现
不支持的函数表达式中使用了当前不支持的函数
引用自身字段不能通过 FIELD("current_api_name") 直接引用自身
字段不存在引用的 API 名称在当前表单中不存在
结果类型不匹配公式返回结果和当前字段数据类型不一致
表达式为空公式模式必须填写公式表达式

使用建议​

建议说明
使用插入字段避免手写 API 名称出错
匹配字段类型文本字段返回文本,数字字段返回数字,开关字段返回布尔值
保存前先试算使用真实记录测试公式是否符合预期
谨慎使用依赖变更时该模式会让字段跟随依赖值变化,适合需要持续更新的默认值
保持表达式可读如果公式过长,可以拆成中间字段分步计算

命令中的公式校验​

通过系统命令设置公式默认值时,设置 defaultValue.mode 为 formula,并提供非空的 defaultValue.formulaExpression;缺少表达式时返回 FORMS_FIELD_FORMULA_EXPRESSION_REQUIRED。