概述
查找关联字段用于在两个独立对象间建立关联关系,形成一对多的数据结构。通过查找关联字段,可以在当前对象中引用另一个对象的数据,实现跨对象的数据查询和展示,是构建复杂业务模型的核心关系字段。
一、字段基本说明
1.1 可选择数据范围
用于新建编辑页面填写关联字段时进行数据过滤。

- 支持设置查找关联对象可选择的数据范围:全部、根据条件。

- 根据条件过滤支持两种形式:基于字段、基于 APL 代码。

- 设置数据范围后,可选择关联的数据必须满足过滤条件。
- 在查找关联对象的详情页,新建相关对象数据,校验数据是否满足过滤条件,不满足的不可新建相关数据。
1.1.1 基于字段过滤
筛选条件中,两个字段类型不一样时无法配置字段相等(例如一个文本类型字段和一个查找关联字段)。
支持的字段类型:
- 文本类、数值类、单选/多选/布尔值、人员/人员多选、部门/部门多选、查找关联/查找关联(多选)、国家省市区、定位、统计字段、可筛选的计算字段、可筛选的引用字段
不支持的字段类型:
- 计算字段:不支持筛选的计算字段不能作为关联过滤字段(计算字段是否可筛选请查看公式配置页面的提示信息,一般数据列表页不能筛选,关联过滤也不支持)。
- 引用字段:不支持筛选的引用字段不能作为关联过滤字段(引用字段是否支持筛选需要看字段配置中是否勾选了"可筛选",引用某些字段类型的引用字段不支持选择"可筛选",原因请看问号提示)。
- 组件字段:支付(收款)组件、签到组件、地区定位、日期范围,这些组件字段是一个整体,需要用内部的字段进行过滤,比如:国家省市区,如果内部字段选择不到就是不支持。
- 业务字段:评星、视频、预约时间段。
- 其他不支持的字段:富文本、协同富文本、长文本、图片、附件、外部人员、关联业务数据、关联业务对象等。

1.1.2 基于自定义函数过滤
- 一个设置条件只能添加一个自定义函数,函数的返回值必须是一个数据集合。
- 函数返回值条数不得超过 500 条,若超出则返回前 500 条数据。

1.1.3 过滤条件使用场景
查找关联字段支持按照主对象的查找关联字段作为条件设置过滤条件:
- 场景一:客户下订单后,厂家发货时,发货明细只能在相应要发货的订单下选产品,即:发货单明细中添加订单产品支持按相应订单进行筛选。
- 场景二:报价单转订单,订单产品添加产品需在报价单明细中产品范围内添加。
1.2 关联对象的数据范围
用于被关联对象的相关列表页,点击【关联】按钮,过滤选数据列表的数据时使用。
例如【采购申请单】内创建关联字段【客户】,则此功能是在创建【客户】时过滤需要关联的【采购申请单】的数据。

支持的字段类型:
- 文本类、数值类、单选/多选/布尔值、人员/人员多选、部门/部门多选、查找关联/查找关联(多选)、国家省市区、定位、统计字段、可筛选的计算字段、可筛选的引用字段
不支持的字段类型:
- 计算字段:不支持筛选的计算字段不能作为关联过滤字段。
- 引用字段:不支持筛选的引用字段不能作为关联过滤字段。
- 组件字段:支付(收款)组件、签到组件、地区定位、日期范围。
- 业务字段:评星、视频、预约时间段。
- 其他不支持的字段:富文本、协同富文本、长文本、图片、附件、外部人员、关联业务数据、关联业务对象等。
1.3 默认值
支持设置默认值:比如订单关联客户,回款关联订单和客户(订单、客户、回款存在三角关系),当希望在新建回款时,选择了订单,把订单的客户名称带到回款的客户名称字段,就可以在回款下客户名称字段设置默认值,取值为订单下的客户名称字段即可。

1.4 三角过滤
场景: 在对象 A 的【关联 B】字段中设置过滤条件:B.C = A.C

1.4.1 三角过滤条件对数据操作交互逻辑的影响
配置: 在对象 A 的【关联 B】字段中设置过滤条件:B.C = A.C
新建/编辑时的数据填写: 需要先填写 C,再填写 B。

详情页面的数据关联校验: 在 B 的数据详情中,关联 A 的数据,选择数据后会校验 B 和 A 上关联的 C 是不是同一条数据。

详情页面的数据关联回填: 在 B 的数据详情中,新建 A 的数据,自动回填关联 B 字段,且只读,回填关联 C 字段有两种情况:
- B 的关联 C 上有值,会回填新建 A 的关联 C 字段,且只读。
- B 的关联 C 上无值,新建 A 的关联 C 字段也为空,且非只读,重新选择 C 后,会清空关联 B,但是仍是只读状态(就算不是可读写也选择不到合适的数据)。


平台差异:
- Web 端:清空 B(中)后,字段仍只读。
- 移动端:清空 B(中)后,字段可读写。
- 只读逻辑后期有调整,部分已经不强制只读,以现状为准。
1.4.2 多层三角过滤会导致布局必填限制不生效的情况
配置示例:
- 【备货单】对象下字段【商机预测】关联了对象【商机】,并设置了筛选范围。

- 【备货单】对象下字段【商机2.0】也关联了对象【商机】,并设置了筛选范围。

此时筛选过滤会不生效。

问题原因:
- 当在"商机预测"详情下新建时,会把相关字段(商机预测、商机2.0)的值带入新建页面,并把字段设为只读,只读的字段不响应布局规则必填。
- 由于客户没有带入值,客户又是必填,当选了客户会触发 lookup 级联清除已带入的值(商机预测)。
解决方法:
在备货单的商机预测字段上添加一个过滤条件"客户名称 = 备货单.客户名称",使其在"商机预测"详情下新建时会自动带入客户。
1.5 四角过滤
四角过滤是三角过滤的延伸,涉及四个对象之间的关联过滤关系。

1.6 五角过滤
配置限制: E 的主属性必须是文本类型,不支持自增编码。

1.7 关联过滤条件前端使用限制
1.7.1 函数过滤使用限制
函数过滤即在查找关联字段配置过滤条件时使用自定义函数。

- 配置了函数过滤,在相关列表新建数据时不能进行校验。

- 函数过滤只能用于新建编辑页面选择数据时生效。

1.7.2 从关联字段添加从的过滤问题
常见问题: 新建编辑页面从对象从查找关联添加从数据选不到数据,但是"添加一行"填写字段又是可以选到的。
从对象的表格中关联字段可以在每行数据中单独填写,也可以通过批量添加按钮回填。

如果从对象上这个关联字段配置了关联过滤条件且用了从对象上的另一个查找关联条件,两个地方过滤出来的数据就会有差异:
- 单条数据上填写关联字段的前提是本对象上的另一个关联字段必须有值,过滤的时候会查找关联对象上的对象 C 字段等于从对象的对象 C 字段。


- 批量添加时,由于是新添加的从,没有从数据一说,所以只能过滤关联对象上的对象 C 为空的数据。

1.8 保存数据关联字段校验问题
- 当存在多组或关系,并且值字段属于三角、四角、五角、函数、主对象、本对象过滤条件会导致规则被跳过。
- 当只有一组时会剔除掉三角、四角、五角、函数、主对象、本对象这些条件后对剩余的条件进行校验。
- 主从新建页面,从对象的查找关联字段在保存数据时不校验过滤条件。
- 以上的限制会导致有些情况下查找关联字段选择的值不符合过滤条件。
1.9 多级过滤与普通过滤同时存在时不生效的问题
场景一: 过滤条件配置一组条件,同时存在多级过滤和普通过滤。

这种情况下在相关列表新建数据时,校验是否符合条件的处理逻辑是:去掉多级过滤,只校验普通过滤条件,保存数据的校验逻辑也一样。
场景二: 过滤条件配置两组条件:多级过滤 & 普通过滤 | 普通过滤。

这种情况下在相关列表新建数据时、保存数据时,过滤条件的校验会去掉多级过滤条件,等同于不校验。
1.10 关联外部数据权限配置
- "关联外部数据权限"配置项只适用于关联对象是"客户"或"合作伙伴"的字段。
- 一个对象下只允许有一个查找关联字段开启此开关。
- 从对象不允许配置"关联外部数据权限",如果遇到修改从对象描述时出现此类报错提示,可编辑相关字段取消配置项。
- "关联外部数据权限"只有在新建数据时生效,如果关联字段是新建后填写/修改的不会再生效。
二、常见问题
2.1 配置筛选值里的"本对象下字段""关联对象下字段""主对象下字段"代表什么?
假如有这样的对象关系:“对象 B”是“对象 A”的从对象,“对象 B”关联“对象 E”。

- 本对象下字段: 代表 B 对象自己。

- 关联对象下字段: 代表这个【关联字段】关联的对象下的字段,这个示例里就是 E 对象。

- 主对象下字段: 代表当前对象的主对象,只有当前对象是从对象的时候才有这个菜单。这个示例里就是 A 对象。

2.2 关联字段配置在某个条件里后就选择不到?
多种过滤条件组合时配置有限制:
- 一个过滤条件中只允许存在一个四角/五角过滤分支。
- 三角/四角/五角过滤条件不可以同时在一个筛选分组中使用。
- 三角和四角、五角不能同时存在不同的分组中。
- 多个三角可以存在或关系和与关系(存在相同或不同分组中)。

2.3 为什么配置不了"或"条件,只能添加一组条件?
想要添加"或"条件需要购买 License → 「对象列表筛选和场景设置支持【或者】」(0RMB)。购买后自定义对象默认支持,如果遇到有预设对象在购买 License 后还是不能添加"或"的,需要找对应的模块负责人咨询。
2.4 填写关联字段——快速选数据希望看到主属性之外的内容
快速选择列表中显示的内容:对象下未开启显示字段时显示主属性,开启显示字段时,显示显示字段的值。
如果关联对象的主属性是编号,快速选择关联数据时希望看到更具体的内容,只需要在关联对象下开启显示字段即可。
开启显示字段方法: 对象 → 基本信息 → 开启显示字段。显示字段可以配置公式,展示自定义的内容,配置后需要等待计算完毕,在未计算完之前,快速选择列表会显示“--”。

2.5 查找关联字段显示"--",编辑数据提示关联关系不存在
如果关联字段关联的数据被删除后,关联字段关联的数据查不到数据名称,会显示“--”,但需注意:这个“--”和空值的“--”是不一样的。

- 关联数据删除后显示的"--"是蓝色,实际可以点击。字段的值其实是关联的数据 ID,可以用函数查询数据获取该字段的值。
- 如果要处理历史数据,只能用函数处理,列表页无法筛选出此类数据。
- 函数处理基本思路: 用函数获取当前数据得到关联的值(数据 ID),然后再用函数用数据 ID 查询关联的数据是否存在。