---
order: 9
navTitle: 数据存储
---
# 数据存储

报表填报应用的数据与模型紧密联系，用户提交的数据将保存在相应模型对应的数据表中。在制作报表填报应用时，报表填报应用支持自动生成模型，同时也支持直接使用已有的模型创建报表填报应用。本文主要讲解自动创建模型与引入已有模型各自的特点。

## 自动创建模型 {#auto}

报表填报应用在创建并发布后，系统会根据报表填报设计器中的设置自动创建相应的数据模型，比如根据表样布局和字段配置生成对应的业务表等。若对填报模型没有业务或技术上的要求，比如不限定物理字段名的命名规范等，可以直接使用系统自动创建模型的机制，只需要按需设置好数据期、填报单位以及对应的单元格的类型，并发布报表填报应用即可，具体介绍见下方章节。

### 表单粒度设置{#setting}

报表填报应用相关的粒度设置会对自动生成业务表有所影响，比如在报表填报应用中，通常通过填报单位、数据期等信息来唯一确定一条数据。因此当设置了[数据期](./settings/period.md#fixed-period)和[填报单位](./settings/org.md)后，报表填报应用会在自动生成的业务表中增加这两个字段作为主键，这两个字段相关信息以及报表填报应用还支持设置的其他粒度详情如下：

- **数据期**：设置[数据期](./settings/period.md#fixed-period)为固定周期后，报表填报应用自动创建的业务表上会增加一个数据期的主键，且该字段的字段角色与选定的**填报周期**一致。
- **填报单位**：选择[填报单位](./settings/org.md)后，报表填报应用自动创建的业务表上会增加一个填报单位的主键，同时该字段会绑定填报单位维表。
- **填报明细数据**：勾选[填报明细数据](./settings/org.md#detail-data)后，需要设置一个明细数据主键，随着明细主键的设置，系统会将该字段自动设置为主键。

### 生成业务表 {#business}

业务表主要是存储表单页面中填报的数据。报表填报应用会根据[表单粒度设置](#setting)与表样的[数据映射](./design-form/data-mapping.md)自动生成模型，无需手动绑定字段，单元格初次设置[单元格类型](./design-form/cell-types.md#type-change)后会在数据源处生成对应的数据模型及字段，后续依次设置其他字段时，数据模型会自动创建字段并进行绑定。在[发布报表填报应用](https://docs.succapp.com/v5/ci/publish)前，所有内部生成的模型都是临时的，此时修改单元格类型，模型字段也会相应变化，单元格类型与模型字段相应关系如下表格：

报表填报应用会根据表样按照其[数据映射](./design-form/data-mapping.md)自动生成模型，

![业务表](./images/2024-06-26-18-03-33.gif)

| 单元格类型 | 对应字段类型 |
|---------|-------- |
| 文本输入 | 字符型 |
| 数值输入 | 浮点型 |
| 下拉框 | 字符型，在**可选项**属性处选择维表后，该字段也将绑定对应的维表，若允许多选，则默认字段存储设置为允许多值|
| 日期 | 字符型，字段角色自动设置为日期 |
| 时间|字符型，字段角色自动设置为时间|
|选择面板|字符型，在**可选项**属性处选择维表后，该字段也将绑定对应的维表，若允许多选，则默认字段存储设置为允许多值|
|勾选框|整型|
|搜索框|字符型|
|上传附件|字符型，字段角色自动设置为附件，若允许上传多个附件则默认字段存储设置为允许多值|
|上传图片|字符型，字段角色自动设置为图片，若允许上传多个附件则默认字段存储设置为允许多值|
|字格|浮点型|
|进度条|浮点型|

::: tip
在表单发布前，可在**数据**属性处调整字段长度，浮点型还支持调整小数位数。也可以通过切换视图来批量修改字段的属性，具体可见[视图](./designer.md#view)。
:::

### 修改表单模型 {#modify}

表单自动生成的模型一经发布，已有字段便不再受表单内单元格类型的改变或删除的影响，仅支持新增字段，若需要修改或删除，需要在数据模块中对模型进行处理，具体可见[模型管理](../../data-gov/model/README.md)。比如随表单的发布，自动生成了公司基本信息表，该表中有公司名称、公司规模两个字段且都为字符型，后续在表单上进行修改是否存在影响具体如下：

- **修改单元格类型**：字段不发生变化。如在设计器页面修改公司规模的单元格类型为数值输入，保存发布后，公司规模的字段不会发生变化。
- **删除单元格**：字段不发生变化。如在设计器界面删除公司规模的相关单元格，保存发布后，公司规模的字段不发生变化，依旧存在。
- **新增**：新增一个字段。如在设计器界面新增一个公司地址的单元格，表单发布后，模型表中会新增一个公司地址的字段。

## 显示隐藏的表单模型 {#display-model}

报表填报应用通常会将一些非数据源列表引入的数据源隐藏起来，避免数据源列表中显示过多的数据源。这些隐藏起来的数据源通常不会直接被单元格的引用，但在报表填报应用中也需要查询这些表。按照不同的用途可以将这些表分为系统表和可选项表，具体介绍见下方。想要显示这些隐藏的表单模型可点击数据源右侧的`﹀`，选择**显示隐藏数据集**。

- [系统表](#system-model)：记录报表填报应用中的填报状态、校验信息等基本信息的数据模型，发布应用时会自动生成。如索引表、数据期表等。
- 可选项表：下拉框可选项处，或[填报单位](./settings/org.md)处引入的维表。如填报单位维表、下图中的产品维表等。

![显示隐藏数据模型](./images/2024-06-26-17-52-05.png)

## 报表填报应用系统表{#system-model}

报表填报应用的系统表主要是指记录报表填报应用中的填报状态、校验信息等基本信息的数据模型。报表填报应用发布后，系统会根据相关设置自动生成对应的系统表，比如根据数据期的设置可生成对应的索引表和数据期表等。

### 索引表 {#index}

索引表主要用于记录报表填报应用的填报状态，包括锁定状态、流程状态、提交时间等内容。[填报单位列表](./settings/interface.md#list)主要是以填报单位表为主查询，通过关联索引表获取单位的填报状态，如填报单位的应报数、已报数等。需要注意的是只有报表填报应用中设置了填报单位或数据期时，才会自动生成该表。关于索引表的更多详情可见文档[数据索引表](/sys-tables/ci/fa_index)。

### 数据期表 {#period}

数据期表主要用于存储数据期、数据期描述等相关内容。数据期表内的数据与用户填报时能切换的数据期有关，如报表填报应用是月报，当前月份为6月，填报将从6月开始，数据期的下拉框内可选择的日期仅有选项`6月`。但如果用户希望填写前几个月的数据，此时可以在数据期表中插入前几个月的数据期，填报界面的数据期下拉框内便会出现这些选项。需要注意的是，只有报表填报应用的数据期为固定周期时，才会自动生成该表。关于数据期表的更多详情可见文档[数据期表](/sys-tables/ci/fa_period)。

### 校验结果表 {#check}

校验结果表主要用于记录批量校验的相关信息，比如校验类型、校验公式、错误级别等。需要注意的是，只有报表填报应用在**设置**>**数据填写**>**数据校验**处**勾选启用批量校验**，才会在发布应用时自动生成该表。关于校验结果表的更多详情可见文档[校验结果表](/sys-tables/ci/fa_validresult)。

## 引入已有模型{#model}

报表填报应用支持引入已有模型来实现表单对应的数据存储。引入的模型需注意相关的字段设置，具体可见[引入外部模型实现数据映射](./design-form/data-mapping.md#note)。需要注意的是，报表填报应用不会主动修改外部引入的模型。比如引入已有模型制作报表填报应用时，若需要新增一个字段存储数据，需要事先在模型中添加好新字段，然后再回到应用中在对应单元格上**绑定字段**。
