ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

金蝶云星空开发~第二篇:建模篇——业务对象设计与元数据开发

金蝶云星空开发~第二篇:建模篇——业务对象设计与元数据开发 前言为什么先学建模如果说第一篇帮你“搭好了灶台”那第二篇就是教你“怎么做菜”。在金蝶云星空开发中业务建模是一切功能的起点——无论是审批流、报表、还是插件逻辑都依附于业务对象本身。BOS IDE的可视化建模能力非常强大绝大多数的单据配置不需要写一行代码。但正因为选项多、可配置性强新手也容易迷失在海量的属性面板中。这一篇的目标是让你能独立完成一张完整业务单据的设计——从零创建、配置字段、设置编码规则、分配权限到最终发布到主控台可用。全程以一张“销售报价单”为实战案例每个知识点都结合这个案例展开。第1章BOS IDE可视化建模入门1.1 子系统、业务对象、元数据的概念辨析在开始操作前先厘清三个核心概念概念含义层级关系子系统业务领域的分组如“供应链”→“采购管理”最高层级业务对象具体的单据、基础资料、报表等隶属于子系统元数据描述业务对象结构的XML数据字段、布局、规则等业务对象的定义文件通俗理解子系统是文件夹业务对象是文件元数据是文件的内容。在BOS IDE中你设计的就是业务对象的元数据。打开BOS IDE的步骤登录金蝶云星空客户端不是Web端是Windows客户端程序点击“协同开发”菜单 → “BOS IDE”在左侧选择你的子系统如“供应链”点击“新建”开始设计1.2 新建单据的三种方式BOS IDE提供了三种新建单据的方式方式适用场景特点空白对象从零设计全新单据自由度高所有配置需要手动完成复制基于现有单据拷贝修改继承被复制单据的所有字段和布局继承基于现有单据派生子类父单据修改时子单据自动同步变更实战推荐初次学习建议选择“空白对象”从零开始会让你对每个配置项都有概念。后续实际项目中如果业务与标准单据高度相似可选择“复制”以提高效率。实战操作新建一张“销售报价单”在BOS IDE左侧树中右键“供应链”→“销售管理”选择“新建”→“单据”输入名称“销售报价单”编码建议使用你开发商标识业务名如DEM_SaleQuote选择“空白对象” → 确定此时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 下拉列表的选项风格与编辑风格基础资料字段有两种表现风格选项风格下拉框从预设的列表中选择。适用于枚举值固定的字段如“报价状态”草稿/已提交/已确认/已失效。配置方式在字段属性中设置“枚举类型”手动添加选项列表编辑风格弹出选择点击放大镜图标弹窗选择。适用于基础资料如客户、物料需要关联到对应的基础资料对象。配置方式在“引用属性”中设置关联的基础资料实战操作为“销售报价单”添加“报价状态”下拉字段拖拽“基础资料字段”到界面字段标识FQuoteStatus名称“报价状态”在属性面板的“枚举类型”中新建枚举添加项草稿值为0已提交值为1已确认值为2已失效值为32.3 单据体分录设计与主从表关联单据体是金蝶云星空中实现“一对多”关系的关键控件——一张单据头对应多条分录行。配置步骤从工具栏拖拽“单据体”控件到界面通常放在分割容器的下半部分在单据体内拖入字段物料、数量、单价、含税单价、金额、含税金额、备注等销售报价单分录字段清单字段标识名称类型说明FMaterialId物料基础资料物料必填FQty数量数字FPrice单价数字FTaxPrice含税单价数字自动计算FAmount金额数字数量×单价自动计算FTaxAmount含税金额数字数量×含税单价FDeliveryDate交货日期日期FLineRemark行备注文本关键配置单据体的“关联字段”属性要设置为单据头的ID字段通常是FID这样才能建立主从关系。2.4 字段默认属性设置在BOS IDE中每个字段的属性面板有许多配置项以下是几个最重要且常被忽略的设置“列表默认显示”勾选后该字段会在单据列表界面默认显示。如果不勾选用户需要在列表设置中手动添加。建议单据编号、日期、客户、总金额、状态等核心字段勾选“支持引出引入”控制该字段是否允许被Excel引出/引入。建议绝大多数业务字段都应勾选系统字段如创建人、修改时间等可不勾选“必填”控制字段是否必须输入。在“校验规则”中配置会更灵活可设置条件必填后续章节会讲。“锁定”控制字段是否可编辑。有些字段如单据状态应锁定不允许用户手动修改。实战操作配置“报价日期”默认为当前日期选中FDate字段在属性面板的“默认值”中填入表达式DateTime.Now()第3章单据类型与编码规则3.1 单据类型配置与业务对象绑定单据类型是金蝶云星空中一个特殊的概念——它本身是一个基础资料用于区分同一张单据的不同业务场景。举个例子“销售报价单”可能有“标准报价”和“紧急报价”两种业务场景它们共用同一张单据的字段结构但编码规则、工作流、审批层级可能不同。这时就可以通过两个单据类型来实现。配置步骤在BOS IDE中打开“销售报价单”设计器点击菜单“单据”→“单据类型”点击“新增”输入编码和名称选择“绑定业务对象”为当前单据3.2 编码规则设计编码规则决定了单据编号的生成格式。一个合理设计的编码规则应具备唯一性、可读性、可追溯性。编码规则组成由多个“段”拼接而成常用段类型段类型说明示例常量固定字符SQ报价单前缀日期段年月日20260803流水号段自动递增数字0001、0002字段值取单据某个字段的值取组织编码、部门编码实战设计“销售报价单”编码规则SQ-{年月日}-{4位流水号}第1段常量SQ-第2段日期段格式yyyyMMdd第3段流水号段位数4位起始值1配置步骤在BOS IDE中打开“销售报价单”设计器菜单“单据”→“编码规则”点击“新增”按上述三段配置保存后将此编码规则设为默认提示流水号段务必设置足够的位数建议4位或6位避免业务量大时流水号溢出。生产环境中建议预留更多位数。3.3 网络控制配置防并发修改网络控制是金蝶云星空的多用户协作机制——防止两个人同时编辑同一张单据导致数据覆盖。配置方式在单据属性中找到“网络控制”设置控制字段通常选择FModifyTime修改时间或FModifierId修改人控制策略保存时校验如果其他人已修改则提示并禁止保存建议所有业务单据都应启用网络控制这是数据一致性的基本保障。第4章权限体系设计权限控制是企业管理软件的核心能力。金蝶云星空的权限体系分为三层功能权限能否看到菜单、字段权限能否看到/编辑某个字段、数据权限能看到哪些数据行。本章重点讲解功能权限配置。4.1 权限对象列表新增与权限项配置权限对象是一组权限项的集合一个业务对象对应一个权限对象。创建权限对象的步骤在BOS IDE中打开“销售报价单”设计器菜单“单据”→“权限对象列表”点击“新增”输入权限对象编码DEM_SaleQuote_Perm名称“销售报价单权限”在权限项列表中配置以下权限项权限项编码权限项名称说明View查看查看单据列表和详情Create新增创建新单据Edit修改修改已有单据Delete删除删除单据Submit提交提交审批Audit审核审核通过UnAudit反审核撤销审核4.2 权限控制设置绑定权限对象创建完权限对象后需要将其绑定到业务对象上打开“销售报价单”设计器属性面板找到“权限对象”属性选择刚才创建的DEM_SaleQuote_Perm在“操作列表”中为每个操作保存、提交、审核等绑定对应的权限项操作绑定权限项后无权限的用户执行该操作时会提示“您没有此操作的权限”。4.3 功能发布到主控台权限配置完单据还需要发布到主控台即系统菜单用户才能看到入口。发布步骤在BOS IDE中打开“销售报价单”设计器菜单“单据”→“发布到主控台”选择发布位置如“供应链”→“销售管理”设置菜单显示名称和图标点击“发布”发布成功后在Web端刷新页面就能在主控台看到“销售报价单”菜单了。4.4 用户授权与权限验证授权操作在Web端进行用管理员账户登录系统进入“系统管理”→“权限管理”→“用户授权”选择目标用户 → 点击“授权”在权限树中找到“销售报价单”权限对象勾选相应的权限项保存生效验证方法用被授权的用户登录查看是否能访问“销售报价单”菜单尝试执行新增、修改、审核等操作验证各权限项是否生效第5章值更新与实体服务规则前面的配置都是“静态设计”这一章开始涉及“动态行为”——当用户操作时系统如何自动响应。5.1 值更新事件的触发机制值更新Value Update是BOS中应用最广泛的动态行为——当某个字段的值发生变化时自动更新其他字段的值。值更新的触发方式字段值变更用户修改了某个字段的值系统自动触发通过公式或实体服务规则触发值更新的执行顺序重要用户修改字段值触发该字段的“值更新”事件按照值更新列表中注册的规则依次执行若多个规则修改同一字段后执行的覆盖先执行的5.2 实体服务规则的配置与应用场景实体服务规则Entity Service Rule是值更新的核心配置方式。它由三要素组成触发条件什么情况下执行如字段值变化、操作执行前等执行动作具体做什么如计算字段值、设置字段可见性、校验数据等执行顺序多个规则之间的先后顺序实战案例销售报价单的自动计算场景1计算明细行金额规则名称“计算行金额”触发条件数量FQty或单价FPrice变化时执行动作FAmount FQty * FPrice配置步骤在BOS IDE中打开“销售报价单”选中单据体字段FAmount在属性面板中找到“值更新” → 点击“…”按钮新增实体服务规则条件FQty 0 AND FPrice 0公式FAmount FQty * FPrice场景2汇总报价总金额规则名称“汇总总金额”触发条件单据体中任意行金额FAmount变化时执行动作FTotalAmount Sum(FAmount)配置步骤选中单据头字段FTotalAmount在“值更新”中新增规则条件无条件执行公式FTotalAmount Sum(FAmount)5.3 校验规则设计与业务拦截校验规则用于在数据保存前验证业务合法性。校验不通过则阻止保存并提示用户。常见校验场景必填项校验客户、物料不能为空业务逻辑校验数量必须大于0有效期必须大于当前日期跨字段校验含税单价不能小于不含税单价实战配置“销售报价单”校验规则校验1报价明细不能为空校验时机保存前校验公式Count(FEntity) 0错误提示“报价明细至少录入一行”校验2有效期必须大于0校验时机保存前校验公式FValidDays 0错误提示“有效期天数必须大于0”配置步骤打开单据设计器 → 菜单“单据”→“校验规则”点击“新增”填写上述配置校验级别选择“错误”阻止保存第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#代码你可以实现任何复杂的业务逻辑。第三篇将详解表单插件、列表插件、服务插件等所有插件类型并给出大量可直接运行的代码示例。练习题为“销售报价单”再配置一个“紧急报价”单据类型编码规则设为SQU-{yyyyMMdd}-{4位流水号}增加一个校验规则当“是否含税”为是时含税单价必须大于0尝试在BOS IDE中复制一张标准单据如“销售订单”观察其字段布局和规则配置与你自己设计的“销售报价单”对比差异
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进