☰
金蝶云星空开发~第二篇:建模篇——业务对象设计与元数据开发
2026/10/9 8:04:58 网站建设 项目流程

前言:为什么先学建模

如果说第一篇帮你“搭好了灶台”,那第二篇就是教你“怎么做菜”。在金蝶云星空开发中,业务建模是一切功能的起点——无论是审批流、报表、还是插件逻辑,都依附于业务对象本身。BOS IDE的可视化建模能力非常强大,绝大多数的单据配置不需要写一行代码。但正因为选项多、可配置性强,新手也容易迷失在海量的属性面板中。

这一篇的目标是:让你能独立完成一张完整业务单据的设计——从零创建、配置字段、设置编码规则、分配权限,到最终发布到主控台可用。全程以一张“销售报价单”为实战案例,每个知识点都结合这个案例展开。


第1章:BOS IDE可视化建模入门

1.1 子系统、业务对象、元数据的概念辨析

在开始操作前,先厘清三个核心概念:

概念含义层级关系
子系统业务领域的分组,如“供应链”→“采购管理”最高层级
业务对象具体的单据、基础资料、报表等隶属于子系统
元数据描述业务对象结构的XML数据(字段、布局、规则等)业务对象的定义文件

通俗理解:子系统是文件夹,业务对象是文件,元数据是文件的内容。在BOS IDE中,你设计的就是业务对象的元数据。

打开BOS IDE的步骤:

  1. 登录金蝶云星空客户端(不是Web端,是Windows客户端程序)
  2. 点击“协同开发”菜单 → “BOS IDE”
  3. 在左侧选择你的子系统(如“供应链”),点击“新建”开始设计

1.2 新建单据的三种方式

BOS IDE提供了三种新建单据的方式:

方式适用场景特点
空白对象从零设计全新单据自由度高,所有配置需要手动完成
复制基于现有单据拷贝修改继承被复制单据的所有字段和布局
继承基于现有单据派生子类父单据修改时子单据自动同步变更

实战推荐:初次学习建议选择“空白对象”,从零开始会让你对每个配置项都有概念。后续实际项目中,如果业务与标准单据高度相似,可选择“复制”以提高效率。

实战操作:新建一张“销售报价单”

  1. 在BOS IDE左侧树中,右键“供应链”→“销售管理”,选择“新建”→“单据”
  2. 输入名称:“销售报价单”,编码建议使用你开发商标识+业务名,如DEM_SaleQuote
  3. 选择“空白对象” → 确定
  4. 此时BOS IDE右侧会显示一个空白的单据设计界面

1.3 单据界面布局:分割容器、面板、页签控件

在BOS IDE中,单据界面由控件树构成,核心布局控件有三个:

分割容器:用于将界面划分为左右或上下两个区域。在“销售报价单”中,我们通常需要:

  • 左/上区域:单据头(主字段)
  • 右/下区域:单据体(分录明细)

面板:承载普通字段的容器,相当于一个“分组框”。可将单据头的字段按逻辑分组,如“客户信息”“报价明细”“审批信息”等。

页签控件:允许多个页签切换,适合字段较多需要分页展示的场景。销售报价单如果字段不多,可以不用页签。

布局层次(从上到下):

表单根节点 ├── 分割容器(水平分割) │ ├── 上面板:单据头区域 │ │ ├── 面板1:基本信息 │ │ ├── 面板2:客户信息 │ │ └── 面板3:金额汇总 │ └── 下面板:单据体区域 │ └── 单据体控件:报价明细分录

第2章:字段与控件详解

2.1 基础字段类型

从工具栏拖拽字段到设计界面时,会弹出字段类型选择窗口。以下是开发中使用频率最高的几种字段:

字段类型适用场景数据库存储类型
基础资料字段引用其他单据或基础资料(如客户、物料、供应商)整型(存储ID)
文本字段单行文本(如名称、备注)nvarchar
大文本字段多行长文本(如详细说明)ntext
数字字段整数或小数(如数量、单价、金额)decimal
日期字段日期或日期时间(如报价日期、有效期)datetime
布尔字段是/否开关(如是否含税)bit

实战配置“销售报价单”字段清单:

字段标识字段名称类型说明
FBillNo单据编号文本由编码规则自动生成
FDate报价日期日期默认取当前日期
FCustomerId客户基础资料(客户)必填
FContactPerson联系人文本
FValidDays有效期(天)数字
FIsTaxIncluded是否含税布尔
FTotalAmount报价总金额数字由明细自动汇总
FRemark备注大文本

2.2 下拉列表的选项风格与编辑风格

基础资料字段有两种表现风格:

选项风格(下拉框):从预设的列表中选择。适用于枚举值固定的字段,如“报价状态”(草稿/已提交/已确认/已失效)。

  • 配置方式:在字段属性中设置“枚举类型”,手动添加选项列表

编辑风格(弹出选择):点击放大镜图标弹窗选择。适用于基础资料(如客户、物料),需要关联到对应的基础资料对象。

  • 配置方式:在“引用属性”中设置关联的基础资料

实战操作:为“销售报价单”添加“报价状态”下拉字段

  1. 拖拽“基础资料字段”到界面
  2. 字段标识:FQuoteStatus,名称:“报价状态”
  3. 在属性面板的“枚举类型”中新建枚举,添加项:
    • 草稿(值为0)
    • 已提交(值为1)
    • 已确认(值为2)
    • 已失效(值为3)

2.3 单据体(分录)设计与主从表关联

单据体是金蝶云星空中实现“一对多”关系的关键控件——一张单据头对应多条分录行。

配置步骤:

  1. 从工具栏拖拽“单据体”控件到界面(通常放在分割容器的下半部分)
  2. 在单据体内拖入字段:物料、数量、单价、含税单价、金额、含税金额、备注等

销售报价单分录字段清单:

字段标识名称类型说明
FMaterialId物料基础资料(物料)必填
FQty数量数字
FPrice单价数字
FTaxPrice含税单价数字自动计算
FAmount金额数字数量×单价,自动计算
FTaxAmount含税金额数字数量×含税单价
FDeliveryDate交货日期日期
FLineRemark行备注文本

关键配置:单据体的“关联字段”属性要设置为单据头的ID字段(通常是FID),这样才能建立主从关系。

2.4 字段默认属性设置

在BOS IDE中,每个字段的属性面板有许多配置项,以下是几个最重要且常被忽略的设置:

“列表默认显示”:勾选后,该字段会在单据列表界面默认显示。如果不勾选,用户需要在列表设置中手动添加。

  • 建议:单据编号、日期、客户、总金额、状态等核心字段勾选

“支持引出引入”:控制该字段是否允许被Excel引出/引入。

  • 建议:绝大多数业务字段都应勾选,系统字段(如创建人、修改时间等)可不勾选

“必填”:控制字段是否必须输入。在“校验规则”中配置会更灵活(可设置条件必填),后续章节会讲。

“锁定”:控制字段是否可编辑。有些字段(如单据状态)应锁定不允许用户手动修改。

实战操作:配置“报价日期”默认为当前日期

  • 选中FDate字段,在属性面板的“默认值”中填入表达式:=DateTime.Now()

第3章:单据类型与编码规则

3.1 单据类型配置与业务对象绑定

单据类型是金蝶云星空中一个特殊的概念——它本身是一个基础资料,用于区分同一张单据的不同业务场景。

举个例子:“销售报价单”可能有“标准报价”和“紧急报价”两种业务场景,它们共用同一张单据的字段结构,但编码规则、工作流、审批层级可能不同。这时就可以通过两个单据类型来实现。

配置步骤:

  1. 在BOS IDE中打开“销售报价单”设计器
  2. 点击菜单“单据”→“单据类型”
  3. 点击“新增”,输入编码和名称,选择“绑定业务对象”为当前单据

3.2 编码规则设计

编码规则决定了单据编号的生成格式。一个合理设计的编码规则应具备:唯一性、可读性、可追溯性。

编码规则组成:由多个“段”拼接而成,常用段类型:

段类型说明示例
常量固定字符SQ(报价单前缀)
日期段年月日20260803
流水号段自动递增数字0001、0002
字段值取单据某个字段的值取组织编码、部门编码

实战设计“销售报价单”编码规则:SQ-{年月日}-{4位流水号}

  • 第1段:常量SQ-
  • 第2段:日期段,格式yyyyMMdd
  • 第3段:流水号段,位数4位,起始值1

配置步骤:

  1. 在BOS IDE中打开“销售报价单”设计器
  2. 菜单“单据”→“编码规则”
  3. 点击“新增”,按上述三段配置
  4. 保存后将此编码规则设为默认

💡提示:流水号段务必设置足够的位数(建议4位或6位),避免业务量大时流水号溢出。生产环境中建议预留更多位数。

3.3 网络控制配置(防并发修改)

网络控制是金蝶云星空的多用户协作机制——防止两个人同时编辑同一张单据导致数据覆盖。

配置方式:在单据属性中找到“网络控制”设置

  • 控制字段:通常选择FModifyTime(修改时间)或FModifierId(修改人)
  • 控制策略:保存时校验,如果其他人已修改则提示并禁止保存

建议:所有业务单据都应启用网络控制,这是数据一致性的基本保障。


第4章:权限体系设计

权限控制是企业管理软件的核心能力。金蝶云星空的权限体系分为三层:功能权限(能否看到菜单)、字段权限(能否看到/编辑某个字段)、数据权限(能看到哪些数据行)。

本章重点讲解功能权限配置。

4.1 权限对象列表新增与权限项配置

权限对象是一组权限项的集合,一个业务对象对应一个权限对象。

创建权限对象的步骤:

  1. 在BOS IDE中打开“销售报价单”设计器
  2. 菜单“单据”→“权限对象列表”
  3. 点击“新增”,输入权限对象编码DEM_SaleQuote_Perm,名称“销售报价单权限”
  4. 在权限项列表中配置以下权限项:
权限项编码权限项名称说明
View查看查看单据列表和详情
Create新增创建新单据
Edit修改修改已有单据
Delete删除删除单据
Submit提交提交审批
Audit审核审核通过
UnAudit反审核撤销审核

4.2 权限控制设置:绑定权限对象

创建完权限对象后,需要将其绑定到业务对象上:

  1. 打开“销售报价单”设计器属性面板
  2. 找到“权限对象”属性,选择刚才创建的DEM_SaleQuote_Perm
  3. 在“操作列表”中,为每个操作(保存、提交、审核等)绑定对应的权限项

操作绑定权限项后,无权限的用户执行该操作时会提示“您没有此操作的权限”。

4.3 功能发布到主控台

权限配置完,单据还需要发布到主控台(即系统菜单),用户才能看到入口。

发布步骤:

  1. 在BOS IDE中打开“销售报价单”设计器
  2. 菜单“单据”→“发布到主控台”
  3. 选择发布位置(如“供应链”→“销售管理”)
  4. 设置菜单显示名称和图标
  5. 点击“发布”

发布成功后,在Web端刷新页面,就能在主控台看到“销售报价单”菜单了。

4.4 用户授权与权限验证

授权操作(在Web端进行):

  1. 用管理员账户登录系统
  2. 进入“系统管理”→“权限管理”→“用户授权”
  3. 选择目标用户 → 点击“授权”
  4. 在权限树中找到“销售报价单”权限对象,勾选相应的权限项
  5. 保存生效

验证方法:

  • 用被授权的用户登录,查看是否能访问“销售报价单”菜单
  • 尝试执行新增、修改、审核等操作,验证各权限项是否生效

第5章:值更新与实体服务规则

前面的配置都是“静态设计”,这一章开始涉及“动态行为”——当用户操作时,系统如何自动响应。

5.1 值更新事件的触发机制

值更新(Value Update)是BOS中应用最广泛的动态行为——当某个字段的值发生变化时,自动更新其他字段的值。

值更新的触发方式:

  • 字段值变更:用户修改了某个字段的值
  • 系统自动触发:通过公式或实体服务规则触发

值更新的执行顺序(重要):

  1. 用户修改字段值
  2. 触发该字段的“值更新”事件
  3. 按照值更新列表中注册的规则依次执行
  4. 若多个规则修改同一字段,后执行的覆盖先执行的

5.2 实体服务规则的配置与应用场景

实体服务规则(Entity Service Rule)是值更新的核心配置方式。它由三要素组成:

  • 触发条件:什么情况下执行(如字段值变化、操作执行前等)
  • 执行动作:具体做什么(如计算字段值、设置字段可见性、校验数据等)
  • 执行顺序:多个规则之间的先后顺序

实战案例:销售报价单的自动计算

场景1:计算明细行金额

  • 规则名称:“计算行金额”
  • 触发条件:数量FQty或单价FPrice变化时
  • 执行动作:FAmount = FQty * FPrice

配置步骤:

  1. 在BOS IDE中打开“销售报价单”,选中单据体字段FAmount
  2. 在属性面板中找到“值更新” → 点击“…”按钮
  3. 新增实体服务规则:
    • 条件:FQty <> 0 AND FPrice <> 0
    • 公式:FAmount = FQty * FPrice

场景2:汇总报价总金额

  • 规则名称:“汇总总金额”
  • 触发条件:单据体中任意行金额FAmount变化时
  • 执行动作:FTotalAmount = Sum(FAmount)

配置步骤:

  1. 选中单据头字段FTotalAmount
  2. 在“值更新”中新增规则:
    • 条件:无条件执行
    • 公式:FTotalAmount = Sum(FAmount)

5.3 校验规则设计与业务拦截

校验规则用于在数据保存前验证业务合法性。校验不通过则阻止保存并提示用户。

常见校验场景:

  • 必填项校验:客户、物料不能为空
  • 业务逻辑校验:数量必须大于0,有效期必须大于当前日期
  • 跨字段校验:含税单价不能小于不含税单价

实战配置“销售报价单”校验规则:

校验1:报价明细不能为空

  • 校验时机:保存前
  • 校验公式:Count(FEntity) > 0
  • 错误提示:“报价明细至少录入一行”

校验2:有效期必须大于0

  • 校验时机:保存前
  • 校验公式:FValidDays > 0
  • 错误提示:“有效期天数必须大于0”

配置步骤:

  1. 打开单据设计器 → 菜单“单据”→“校验规则”
  2. 点击“新增”,填写上述配置
  3. 校验级别选择“错误”(阻止保存)

第6章:设计最佳实践

以下经验来自大量项目的沉淀,可以帮你少踩很多坑。

6.1 单表字段总数不超过50个

金蝶官方建议:单张单据的字段总数(含隐藏字段)应控制在50个以内。超过50个会严重影响单据打开、保存的性能。

如何控制:

  • 能不存的字段不存(如临时计算的结果可不存数据库)
  • 能合并的字段合并(如用组合字段代替多个独立字段)
  • 超过50个字段时,应考虑拆分单据或使用页签+延迟加载

6.2 框架布局停靠元素数量限制

在BOS IDE中,每个面板、分割容器、页签等都是布局元素。当布局层次超过5层时,会影响界面渲染性能。

建议:

  • 避免嵌套过多分割容器(2层以内)
  • 面板数量控制在3-5个
  • 页签数量控制在5个以内

6.3 基础资料表单主键建议使用整型

设计基础资料(如自定义的“报价类型”基础资料)时,主键字段建议使用整型而非文本。

原因:

  • 整型索引效率高,在大数据量下查询性能显著优于文本
  • 整型占用的存储空间小
  • 在关联查询中,整型关联速度更快

配置方式:在基础资料设计器中,主键字段类型选择“整数”。


本章实战总结:销售报价单完整设计清单

至此,“销售报价单”的完整配置已完成。回顾一下你都做了哪些工作:

  • ✅ 创建了“销售报价单”业务对象(空白对象方式)
  • ✅ 设计了单据头字段:编号、日期、客户、联系人、有效期、是否含税、总金额、状态、备注
  • ✅ 设计了单据体分录:物料、数量、单价、含税单价、金额、含税金额、交货日期、行备注
  • ✅ 配置了编码规则:SQ-{yyyyMMdd}-{4位流水号}
  • ✅ 启用了网络控制
  • ✅ 创建了权限对象并配置了权限项
  • ✅ 发布到主控台(供应链→销售管理)
  • ✅ 配置了值更新规则:行金额自动计算、总金额自动汇总
  • ✅ 配置了校验规则:分录不为空、有效期大于0

现在你可以登录Web端,找到“销售报价单”菜单,尝试新增一张单据——输入客户、物料、数量、单价,观察金额是否自动计算。如果一切正常,你已经掌握了BOS IDE的核心建模能力!


下一篇预告

下一篇我们将进入插件开发阶段。建模完成的是“骨骼”,插件赋予的是“灵魂”——通过C#代码,你可以实现任何复杂的业务逻辑。第三篇将详解表单插件、列表插件、服务插件等所有插件类型,并给出大量可直接运行的代码示例。


练习题:

  1. 为“销售报价单”再配置一个“紧急报价”单据类型,编码规则设为SQU-{yyyyMMdd}-{4位流水号}
  2. 增加一个校验规则:当“是否含税”为是时,含税单价必须大于0
  3. 尝试在BOS IDE中复制一张标准单据(如“销售订单”),观察其字段布局和规则配置,与你自己设计的“销售报价单”对比差异

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询