# CloudCC 自定义对象介绍

## 1. 什么是自定义对象

自定义对象是 CloudCC 平台中承载业务数据的核心建模能力。

当标准对象无法满足业务需求时，可以通过自定义对象定义一类新的业务实体，用来存储、组织和管理企业自己的业务数据。

可以把它理解为：

- 一个新的业务数据模型
- 一张由平台托管的业务数据表
- 后续字段、页面、菜单、权限、自动化逻辑的基础载体

---

## 2. 自定义对象能做什么

创建一个自定义对象后，通常可以围绕它继续完成以下工作：

- 为对象添加字段，定义业务属性
- 为对象配置页面、菜单和应用入口
- 为对象编写触发器、后端类、客户端脚本等逻辑
- 作为报表、列表、详情页、审批流或自动化规则的数据基础
- 与其他对象建立关联关系，形成完整的业务模型

也就是说，自定义对象不是孤立存在的，它往往是整个 CloudCC 二次开发的起点。

---

## 3. 主要作用是什么

自定义对象的主要作用是把企业自己的业务概念，沉淀成平台可以管理和扩展的数据实体。

例如，企业可能会有一些 CloudCC 标准对象中没有的业务概念：

- 渠道合作商
- 培训计划
- 项目立项单
- 售后服务工单
- 设备巡检记录
- 合同回款计划

这些内容如果没有独立的数据对象，就很难被规范地管理、查询、统计和扩展。

通过自定义对象，可以把这些业务概念平台化，后续再叠加字段、权限、页面和自动化逻辑，实现完整的业务支撑。

---

## 4. 为什么要用自定义对象

使用自定义对象，通常是为了解决以下问题：

### 4.1 标准对象不够用

标准 CRM 对象更适合通用销售、客户、商机等场景。  
如果你的业务有明显的行业特性或内部流程特性，就需要自定义对象来承载这些专属数据。

### 4.2 业务数据没有统一模型

很多团队一开始会把业务数据分散在备注、Excel、附件或多个对象的扩展字段里。  
这样会导致：

- 数据结构混乱
- 难查询、难统计
- 权限和流程不好控制
- 后续开发成本越来越高

自定义对象可以帮助团队建立统一的数据模型。

### 4.3 后续扩展困难

如果没有对象作为基础，就很难继续配置：

- 字段
- 页面
- 菜单
- 审批
- 触发器
- 自动化逻辑
- 报表与统计

自定义对象本质上是在为后续的二次开发打地基。

---

## 5. 能解决哪些问题

自定义对象通常可以解决以下几类问题：

- 业务实体无法落地存储的问题
- 非标准流程缺少独立数据载体的问题
- 数据分散、命名混乱、难以统一管理的问题
- 无法围绕某类业务数据做页面、权限、流程和自动化的问题
- 无法对特定业务做统计分析和生命周期管理的问题

---

## 6. 在什么情况下使用

当出现以下情况时，通常就应该考虑使用自定义对象：

- 现有标准对象找不到合适的数据承载位置
- 一类业务数据有明确的独立含义，需要单独维护
- 需要给这类数据配置独立字段、列表、详情页或菜单入口
- 需要围绕这类数据编写触发器、后端逻辑或客户端脚本
- 需要对这类数据做独立的权限控制、流程控制或报表统计

简单说，只要某类业务数据需要被“长期、规范、可扩展”地管理，就适合建成一个自定义对象。

---

## 7. 常见业务场景

### 7.1 行业化业务扩展

例如教育、制造、医疗、服务型企业，往往会有标准 CRM 没有的业务实体：

- 课程班级
- 设备档案
- 巡检计划
- 维修工单
- 服务回访单

这类场景通常适合通过自定义对象建模。

### 7.2 内部流程数字化

如果企业希望把线下或半线下流程搬到 CloudCC 中管理，例如：

- 项目申请
- 费用登记
- 合同变更申请
- 客诉处理
- 交付验收记录

这类流程通常都需要一个独立对象来沉淀流程数据。

### 7.3 围绕客户或商机的扩展管理

有些数据虽然与客户或商机有关，但不适合直接塞到标准对象里，例如：

- 客户拜访记录
- 渠道返佣记录
- 实施里程碑
- 回款计划

这类场景可以用自定义对象做扩展，再通过关联字段与客户、商机连接起来。

### 7.4 需要长期运营的数据台账

比如：

- 资产台账
- 证照台账
- 项目档案
- 服务记录

这类数据通常结构稳定、需要长期维护，很适合对象化管理。

---

## 8. 使用自定义对象时的理解方式

在设计时，可以先问自己几个问题：

1. 这是不是一类独立的业务实体？
2. 这类数据是否需要独立字段和独立页面？
3. 是否需要围绕它做权限、流程、自动化或报表？
4. 这类数据未来会不会持续扩展？

如果这几个问题大多回答为“是”，通常就说明应该考虑新建一个自定义对象。

---

## 9. 与其他模块的关系

自定义对象通常和这些模块联动：

- `fields`：给对象增加字段
- `menu`：给对象增加菜单入口
- `application`：把对象放入应用
- `triggers`：围绕对象数据变化编写触发逻辑
- `classes`：围绕对象编写业务服务逻辑
- `script` / `plugin` / `customPage`：围绕对象做页面交互与前端扩展

因此，自定义对象往往是 CloudCC 二次开发中最基础、最上游的建模模块之一。
