> For the complete documentation index, see [llms.txt](https://docs.coreway.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coreway.com/yoov-plus/worksheet/worksheet-design/field-type/sub-table.md).

# 子表

子表字段用于在一个主表单内，嵌入并管理一组格式相同、数量可变的数据行，非常适合处理“一对多”的业务关系，例如：订单中的产品明细、员工的教育经历、领用申请中的物品列表。

## **1. 两种创建方式** <a href="#id-1-two-creation-methods" id="id-1-two-creation-methods"></a>

| 创建方式            | 说明                     | 核心特点                                           |
| --------------- | ---------------------- | ---------------------------------------------- |
| **1.1 从空白添加**   | 在当前表单内新建一个非实体的子表结构。    | **灵活设计**：可自由添加、删除子表内的字段，完全自定义数据结构。需添加字段设计数据结构。 |
| **1.2 引用已有工作表** | 将应用中已存在的某个实体工作表作为子表嵌入。 | **数据复用**：直接引用已有表的结构和数据关系，**不可修改**子表字段结构。       |

<div align="left"><figure><img src="/files/jFg0hDq9JqbtmIAEMzIX" alt=""><figcaption></figcaption></figure></div>

### **1.1** 从空白添加子表 <a href="#id-1-1-add-subtable-from-blank" id="id-1-1-add-subtable-from-blank"></a>

1. **添加空白子表**：在表单设计器中，从左侧字段控件区选择 **【子表】**，将其拖拽或添加到表单设计区。
2. **设计子表结构**：子表添加后，您可以像设计普通工作表一样，**从左侧字段控件区拖拽所需字段（如文本、数字、选项等）到子表区域内**，从而定义子表的数据结构。

#### **子表内字段管理**

在子表内部，您可以对字段进行以下管理操作：

* **（1）设置字段属性**：点击子表内的任一字段，即可在右侧属性面板中配置其名称、验证、默认值等。
* **（2）调整字段排序**：直接通过**拖拽**子表内的字段，即可调整它们在行中的显示顺序。
* **（3）复制字段**：点击字段右上角的 **【**![](/files/Ntb6eBuUFwztbKrgUgI2)**】** 图标，可快速复制一个配置相同的字段。
* **（4）删除字段**：点击字段右上角的 **【**![](/files/nYJ9LrtaimvF9sYCfBNw)**】** 图标，可从子表中移除该字段。

**（5）转为实体工作表**

当子表结构稳定后，您可以将其升级为一个独立的实体工作表。

* **操作**：点击子表区域的属性设置，找到并点击 **【转为工作表】** 按钮。
* **结果**：转换成功后，该子表将变为一个**独立的实体工作表**，并**显示在应用首页的导航栏**中。此操作**不可逆转**。
* **请注意：**
  * **转换后关系**：转换仅创建了一个归属关系，**不会自动建立**主表与新工作表之间的数据关联。如需关联，您必须**手动在新工作表中添加“关联记录”字段**来建立双向关联。
  * **删除独立性**：即使在主表中删除了这个子表字段，**已转换生成的实体工作表也不会被删除**，它已成为一个独立的数据对象。

<figure><img src="/files/4W07tpYFqjuDts4b4g1g" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/cChdJiJcHnyamHtq2ygT" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/lhC8GTGpdKdSLBtDwrKI" alt=""><figcaption><p><strong>空白子表转为实体工作表</strong></p></figcaption></figure>

### **1.2将已有工作表作为子表** <a href="#id-1-2-use-existing-worksheet-as-subtable" id="id-1-2-use-existing-worksheet-as-subtable"></a>

**核心操作流程**

1. **选择引用**：在添加子表时，选择 **【将已有工作表作为子表】** 选项。
2. **选择目标工作表**：从列表中选择您希望引用的现有工作表。
3. **完成添加**：添加后，该工作表的全部字段结构将自动载入为子表内容，**无需重新设计字段**。

**字段管理限制与显示控制**

* **结构锁定**：由于是直接引用，您**无法在子表内**对字段进行添加、删除或修改等结构调整操作。所有字段定义均需在源工作表中进行维护。
* **控制显示字段**：虽然结构不可变，但您可以**设置子表中显示的字段**。
  * **操作**：在子表属性中，进入 **【显示字段】** 设置。
  * **效果**：仅勾选的字段会在子表列表中展示，未勾选的字段将被隐藏。这有助于简化界面，仅展示关键信息。

<div align="left"><figure><img src="/files/EcHhYsRpUHs5aPBthVKk" alt="" width="365"><figcaption></figcaption></figure></div>

## 2.双向关联 <a href="#id-2-bidirectional-relation" id="id-2-bidirectional-relation"></a>

子表与主表的双向关联，和关联记录与关联记录的双向关联是一样的操作。

不同的是，在主表里删除子表内的行记录，转成的实体表也会删除记录，而非取消关联记录。

<figure><img src="/files/Xik1d5QX9EwCEAQhh4c6" alt=""><figcaption></figcaption></figure>

## **3. 操作权限控制** <a href="#id-3-operation-permission-control" id="id-3-operation-permission-control"></a>

可精细控制用户对子表数据的交互方式：

* **可新增明细**：允许手动添加行。
* **可编辑已有明细**：允许修改已存在的行数据。
* **可删除已有明细**：允许删除行数据。\
  通过组合配置，可实现“仅允许通过工作流或默认值自动填充，禁止手动修改”等高级场景。

## **4. 新增行方式** <a href="#id-4-add-row-method" id="id-4-add-row-method"></a>

* **单行添加**：逐条添加，为默认方式。
* **批量选择添加**：可针对子表内的某个关联记录字段，**一次性批量选择多条记录**生成子表行，极大提升录入效率（例如：在订单明细中一次性勾选多个产品）。

## **5. 行数据操作** <a href="#id-5-row-data-operation" id="id-5-row-data-operation"></a>

勾选子表行时，会出现 **【复制】** 和 **【删除】** 按钮，支持对单行或批量行进行快速复制或删除。**此功能在公开表单中仅限Web端使用。**

## **6. 验证** <a href="#id-6-validation" id="id-6-validation"></a>

* **子表整体必填**：可设置整个子表控件为必填，即至少需要存在一行明细数据。
* **明细字段验证**：
  * **空白子表**：可单独设置其内部每个字段的验证规则（如必填、格式）。
  * **引用实体子表**：遵循被引用工作表原有字段的验证规则。

## **7. 字段级权限控制** <a href="#id-7-field-level-permission-control" id="id-7-field-level-permission-control"></a>

在**自定义权限组**、**工作流的审批与填写节点**中，可以针对子表内的**每一个明细字段**单独设置可见、可编辑等精细权限。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.coreway.com/yoov-plus/worksheet/worksheet-design/field-type/sub-table.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
