字段清单与自定义字段
物料、客户、商机、项目、供应商、销售合同等业务支持租户在主站自行配置字段—— 既能调整系统字段的显示与必填,也能新增自定义字段。这些配置每个租户各不相同, 静态文档无从表达,需要在运行时查询。
system.field.list 就是这个查询入口,一个接口能回答三件事:
- 某业务有哪些字段,包括租户自建的
- 哪些字段被配置为必填
- 高级筛选可以用哪些字段名
调用
curl -X POST https://open.risemap.cn/v1/api/invoke \
-H "X-App-Key: <appKey>" \
-H "X-App-Secret: <appSecret>" \
-H "Content-Type: application/json" \
-d '{ "apiCode": "system.field.list", "query": { "label": "customer" } }'
label 是业务标识,取 customer / product / opportunity / supplier /
project / sales_contract 等;具体可用值以接口返回为准。所需范围 system:read。
返回一条字段的形态:
{
"id": "2092601027944525825",
"label": "customer",
"fieldScope": "form",
"fieldName": "field_ogwkl4",
"name": "测试---单行文本",
"type": 1,
"fieldType": 0,
"isNull": 0,
"isSystem": 0,
"options": null,
"maxLength": null
}
三个容易读错的字段
isNull —— 0 才是必填
字面是「是否可为空」,所以取值与直觉相反:
| 取值 | 含义 |
|---|---|
0 | 必填 |
1 | 选填 |
判断必填请写 isNull === 0,主站前端表单也是这么判的。
fieldScope —— 同一字段会出现多次
同一个字段可能同时配置在表单(form)与详情(detail)两个场景下,
因此按 fieldName 去重前会看到重复项。要取表单的必填配置,
应先按 fieldScope === 'form' 过滤。
以某租户的客户业务为例:接口返回 95 条,其中 form 87 条,name 因两个
场景各有一条而出现两次。
isSystem / fieldType —— 区分系统字段与自建字段
| 字段 | 取值 | 含义 |
|---|---|---|
isSystem | 1 | 系统内置字段 |
isSystem | 0 | 租户自建的自定义字段 |
fieldType | 0 | 自定义 |
fieldType | 1 | 系统固定 |
fieldType | 2 | 系统字段但值存于扩展表 |
自建字段的 fieldName 形如 field_ogwkl4——随机后缀,各租户不同,
不要硬编码。
用途一:写入前自行校验必填
需要特别说明:租户配置的必填不约束开放接口。某租户把「客户分类」配成必填, 经开放接口创建客户时不传它依然会成功——那层校验只作用于主站表单。
后果是:经接口写入的数据可能缺少租户认为必填的字段,这些记录在主站界面上 打开编辑时会被要求补填。
如果希望与主站表单保持一致,就用本接口读取配置、在写入前自行校验:
const fields = await invoke('system.field.list', { query: { label: 'customer' } });
const required = fields
.filter((f) => f.fieldScope === 'form' && f.isNull === 0)
.map((f) => f.fieldName);
// required 形如 ['name', 'categoryId', 'field_ogwkl4']
接口本身强制的必填是另一回事,边界见必填字段的判定。
用途二:取高级筛选可用的字段名
带高级筛选的查询接口(客户、商机、物料、供应商等的 .page)接受
advancedFilters 参数,其中的字段名就取自本接口的 fieldName——
包括租户自建字段,这也是筛选自定义字段的唯一途径。
{
"apiCode": "sales.customer.page",
"body": {
"pageNum": 1,
"pageSize": 10,
"advancedFilters": "{\"field_ogwkl4\":{\"op\":\"contains\",\"value\":\"测试\"}}"
}
}
算子清单与转义规则见对应接口的参数说明。该能力依赖检索索引,索引未就绪时 结果为空。
只读
开放平台只提供字段清单的查询,不开放字段的创建、修改与删除—— 那属于租户管理员在主站的配置动作,不宜由集成方代为变更。 角色字段权限、用户列配置等同理,均未开放。