跳至主要內容

金蝶

Entity大约 5 分钟

金蝶

1. 常用命名空间 + 对应程序集

Kingdee.BOS

Kingdee.BOS.Core.dll  // 金蝶 BOS 平台核心服务、上下文、事务、日志等

Kingdee.BOS.ServiceHelper

Kingdee.BOS.ServiceHelper.dll  // 最常用工具类集合(DB、动态表单、单据操作等)

Kingdee.BOS.WebApi.Client

Kingdee.BOS.WebApi.Client.dll  // WebApi 客户端核心(ApiClient、DynamicFormApi 等)

Kingdee.BOS.App.Core

Kingdee.BOS.App.Core.dll  // 业务服务基类、数据包、业务对象操作

Kingdee.BOS.Orm

Kingdee.BOS.Orm.dll  // ORM 操作、DynamicObject、DataEntity


Kingdee.BOS.Resource

Kingdee.BOS.Resource.dll  // 多语言、资源文件


Kingdee.BOS.JSON

Kingdee.BOS.JSON.dll  // 林格曼 JSON 序列化(比 Newtonsoft 更快更兼容)


Kingdee.K3.FIN.BP.ServiceHelper

Kingdee.K3.FIN.BP.ServiceHelper.dll  // 财务常用扩展工具(仅财务项目常用)

2. 常用插件基类(可继承)

类名程序集极简说明
AbstractBillPlugInKingdee.BOS.App.Core.dll单据插件基类(最常用)
AbstractCloudBillPlugInKingdee.BOS.App.Core.dll云家单据插件基类
AbstractServicePlugInKingdee.BOS.App.Core.dll服务插件基类
AbstractAuditServicePlugInKingdee.BOS.App.Core.dll审核服务插件基类
AbstractUnAuditServicePlugInKingdee.BOS.App.Core.dll反审核服务插件基类
AbstractPushServicePlugInKingdee.BOS.App.Core.dll推送服务插件基类
AbstractOperationServicePlugInKingdee.BOS.App.Core.dll通用操作服务插件基类
AbstractDynamicFormPlugInKingdee.BOS.App.Core.dll动态表单插件基类
AbstractReportPlugInKingdee.BOS.App.Core.dll报表插件基类
AbstractScheduleServicePlugInKingdee.BOS.App.Core.dll定时任务插件基类

3. 关键对象与工具类(核心功能极简标注)

类名 / 类型程序集核心功能极简说明
Kingdee.BOS.ContextKingdee.BOS.Core.dll当前上下文(用户、组织、语言、Token等)
Kingdee.BOS.Core.DynamicFormOperateKingdee.BOS.ServiceHelper.dll单据保存、提交审核反审核一站式操作
Kingdee.BOS.Core.BillOperateKingdee.BOS.ServiceHelper.dll旧版单据操作(兼容K/3)
Kingdee.BOS.WebApi.Client.ApiClientKingdee.BOS.WebApi.Client.dllWebApi核心客户端
Kingdee.BOS.WebApi.Client.DynamicFormApiKingdee.BOS.WebApi.Client.dll动态表单API封装(Save、Submit、Audit等)
Kingdee.BOS.Orm.DataEntityKingdee.BOS.Orm.dllDynamicObject别名,最常用数据实体
Kingdee.BOS.Orm.DynamicObjectKingdee.BOS.Orm.dllBOS核心动态对象
Kingdee.BOS.Orm.DynamicObjectCollectionKingdee.BOS.Orm.dll分录集合
Kingdee.BOS.JSON.Linq.JObjectKingdee.BOS.JSON.dll金蝶专用JSON对象(必须用它序列化)
Kingdee.BOS.JSON.JsonSerializerKingdee.BOS.JSON.dll金蝶专用序列化器
Kingdee.BOS.Util.KDStringUtilsKingdee.BOS.Core.dll字符串工具
Kingdee.BOS.Util.KDObjectHelperKingdee.BOS.Core.dll对象转换、判空工具
Kingdee.BOS.Core.SqlHelperKingdee.BOS.ServiceHelper.dll直接执行SQL(需权限)
Kingdee.BOS.Core.QueryHelperKingdee.BOS.ServiceHelper.dll构建查询方案工具

AbstractBillPlugIn 类核心 API 清单

方法名参数类型返回值极简说明
AfterBindDataEventArgs evoid数据绑定后,加载界面数据后执行
BeforeBindDataEventArgs evoid数据绑定前,准备数据前执行
AfterDoOperationDoOperationEventArgs evoid操作执行后(如保存、审核)
BeforeDoOperationDoOperationEventArgs evoid操作执行前,验证业务前执行
BarItemClickBarItemClickEventArgs evoid工具栏按钮点击事件处理
AfterSaveSaveEventArgs evoid保存后,数据持久化后执行
BeforeSaveSaveEventArgs evoid保存前,数据校验前执行
AfterCreateNewDataCreateNewEventArgs evoid新建数据后,初始化后执行
BeforeCreateNewDataCreateNewEventArgs evoid新建数据前,预设默认值前执行
AfterLoadEventArgs evoid加载单据后,整个视图加载后
BeforeLoadEventArgs evoid加载单据前,准备视图前执行

说明:以上为金蝶云·星空BOS平台中AbstractBillPlugIn(继承自AbstractDynamicFormPlugIn)的核心可重写方法,覆盖单据生命周期90%插件场景(如数据操作、按钮事件)。完整继承链:AbstractBasePlugIn → AbstractDynamicFormPlugIn → AbstractBillPlugIn。使用时需override并调用base方法。

金蝶云·星空 AbstractBillPlugIn 中操作 DOM 元素、页面提示、用户信息、刷新页面的核心 API 清单

(2023–2025 版本通用,全部在插件内部 this.View、this.Context 中直接调用)

分类API 全路径(最常用写法)返回值极简说明(用途)
获取当前登录用户信息this.Context.CurrentOrganizationInfo.FunctionalCurrencyIdlong / string当前组织本位币ID
this.Context.UserIdlong当前登录用户内码
this.Context.UserNamestring当前登录用户名
this.Context.UserTokenstring当前登录Token(调用API时常用)
this.Context.CurrentOrganizationInfo.IDopen in new windowlong当前组织内码
this.Context.CurrentOrganizationInfo.Nameopen in new windowstring当前组织名称
页面提示 MessageBoxthis.View.ShowMessage("提示内容", MessageBoxType.Information)void普通信息提示
this.View.ShowMessage("错误", MessageBoxType.Error)void错误提示
this.View.ShowWarnningMessage("警告内容")void黄色警告提示
this.View.ShowErrMessage("错误内容", "标题", MessageBoxOptions.OK)void带标题的错误框
this.View.ShowOperateResult("保存成功!")void绿色操作成功提示(最常用)
操作控件值this.View.GetFieldEditor("FTextField").SetValue("值")void设置文本框值
this.View.GetFieldEditor("FNumberField").SetValue("KH001")void设置编号控件值
string val = this.View.Model.GetValue("FTextField") as string;object读取控件值
this.View.Model.SetValue("FNumberField", "KH002", rowIndex)void设置分录某行某字段值
this.View.Model.GetValue("FEntryField", rowIndex)object读取分录值
控件显隐/启用禁用this.View.GetControl("FPanel").Visible = falsevoid隐藏控件/面板
this.View.GetControl("FButton").Enabled = falsevoid禁用按钮
this.View.SetControlVisible("FTextField", false)void封装方法隐藏控件
this.View.SetControlEnabled("FSaveButton", false)void封装方法禁用控件
刷新页面/分录/控件this.View.UpdateView("FEntity")void刷新分录区域(最常用)
this.View.UpdateView()void刷新整个页面
this.View.Refresh()void完全刷新视图(等同UpdateView())
this.View.InvokeFieldUpdateService("FNumberField")void触发字段更新服务(如带出逻辑)
分录增删行this.View.Model.CreateNewEntryRow("FEntity")int新增分录行,返回行号
this.View.Model.DeleteEntryRow("FEntity", rowIndex)void删除指定分录行
this.View.Model.BatchCreateNewEntryRows("FEntity", 5)void批量新增5行
打开其他单据/表单this.View.ShowForm(new FormMetadata { FormId = "BOS_BillShowParameter" }, result => { ... })void打开标准单据选择框
this.View.OpenParameterForm("BD_Supplier", "供应商", callback)void打开基础资料(供应商、客户、物料等)
获取当前单据主键long pkId = Convert.ToInt64(this.View.Model.BillBusinessInfo.GetPrimaryKey().GetValue(this.View.Model.DataObject));long获取当前单据主键值
触发工具栏按钮this.View.DoOperationByName("Save")void程序化点击“保存”按钮
this.View.DoOperationByName("Audit")void程序化点击“审核”按钮
布局与样式this.View.LayoutInfo.SetControlBackColor("FTextField", Color.Red)void设置控件背景色
this.View.StyleInfo.SetItemForeColor("FTextField", Color.Blue)void设置字段文字颜色

推荐最常用 10 行代码模板(几乎所有插件都会用到)

// 1. 当前用户/组织
long userId = this.Context.UserId;
string orgName = this.Context.CurrentOrganizationInfo.Name;

// 2. 读写字段
object value = this.View.Model.GetValue("F_Customer");
this.View.Model.SetValue("F_Text", "测试", 0);

// 3. 提示
this.View.ShowOperateResult("操作成功!");

// 4. 刷新分录
this.View.UpdateView("FEntity");

// 5. 隐藏/禁用控件
this.View.GetControl("FPanel1").Visible = false;

// 6. 新增分录行
int row = this.View.Model.CreateNewEntryRow("FEntity");
this.View.Model.SetValue("F_Material", "WL001", row);
this.View.UpdateView("FEntity");

以上 API 100% 在 AbstractBillPlugIn、AbstractDynamicFormPlugIn 中直接可用,无需额外引用。

更新元素数据并且保存


// 表单插件内:赋值 -> 触发保存
this.View.Model.SetValue("FNote", "由插件写入的备注");

// 可选:界面刷新让前端看到变更
this.View.UpdateView("FNote");

// 触发系统内置的“保存”操作(等价于点击“保存”按钮)
this.View.InvokeFormOperation("Save");

数据库

Kingdee.BOS.App.Data DBUtils Class

单个查询语句建议使用ExecuteReader方法,更新和删除语句以及DDL语句用Execute方法。 业务对象数据获取建议使用ExecuteDynamicObject方法,该方法直接返回DynamicObject对象直接使用,无需做字段类型转换以及空值判断。 批量执行语句建议使用ExecuteBatch方法,方法的参数支持参数化SQL。该方法在SQL语句较多时有较好的性能。 执行某个SQL并获取第一行第一列的值使用ExecuteScalar方法,该方法允许调用前设置默认值,当查询返回为空的时候以默认值替代返回的空值。

金蝶教程open in new window