金蝶
金蝶
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. 常用插件基类(可继承)
| 类名 | 程序集 | 极简说明 |
|---|---|---|
| AbstractBillPlugIn | Kingdee.BOS.App.Core.dll | 单据插件基类(最常用) |
| AbstractCloudBillPlugIn | Kingdee.BOS.App.Core.dll | 云家单据插件基类 |
| AbstractServicePlugIn | Kingdee.BOS.App.Core.dll | 服务插件基类 |
| AbstractAuditServicePlugIn | Kingdee.BOS.App.Core.dll | 审核服务插件基类 |
| AbstractUnAuditServicePlugIn | Kingdee.BOS.App.Core.dll | 反审核服务插件基类 |
| AbstractPushServicePlugIn | Kingdee.BOS.App.Core.dll | 推送服务插件基类 |
| AbstractOperationServicePlugIn | Kingdee.BOS.App.Core.dll | 通用操作服务插件基类 |
| AbstractDynamicFormPlugIn | Kingdee.BOS.App.Core.dll | 动态表单插件基类 |
| AbstractReportPlugIn | Kingdee.BOS.App.Core.dll | 报表插件基类 |
| AbstractScheduleServicePlugIn | Kingdee.BOS.App.Core.dll | 定时任务插件基类 |
3. 关键对象与工具类(核心功能极简标注)
| 类名 / 类型 | 程序集 | 核心功能极简说明 |
|---|---|---|
| Kingdee.BOS.Context | Kingdee.BOS.Core.dll | 当前上下文(用户、组织、语言、Token等) |
| Kingdee.BOS.Core.DynamicFormOperate | Kingdee.BOS.ServiceHelper.dll | 单据保存、提交审核反审核一站式操作 |
| Kingdee.BOS.Core.BillOperate | Kingdee.BOS.ServiceHelper.dll | 旧版单据操作(兼容K/3) |
| Kingdee.BOS.WebApi.Client.ApiClient | Kingdee.BOS.WebApi.Client.dll | WebApi核心客户端 |
| Kingdee.BOS.WebApi.Client.DynamicFormApi | Kingdee.BOS.WebApi.Client.dll | 动态表单API封装(Save、Submit、Audit等) |
| Kingdee.BOS.Orm.DataEntity | Kingdee.BOS.Orm.dll | DynamicObject别名,最常用数据实体 |
| Kingdee.BOS.Orm.DynamicObject | Kingdee.BOS.Orm.dll | BOS核心动态对象 |
| Kingdee.BOS.Orm.DynamicObjectCollection | Kingdee.BOS.Orm.dll | 分录集合 |
| Kingdee.BOS.JSON.Linq.JObject | Kingdee.BOS.JSON.dll | 金蝶专用JSON对象(必须用它序列化) |
| Kingdee.BOS.JSON.JsonSerializer | Kingdee.BOS.JSON.dll | 金蝶专用序列化器 |
| Kingdee.BOS.Util.KDStringUtils | Kingdee.BOS.Core.dll | 字符串工具 |
| Kingdee.BOS.Util.KDObjectHelper | Kingdee.BOS.Core.dll | 对象转换、判空工具 |
| Kingdee.BOS.Core.SqlHelper | Kingdee.BOS.ServiceHelper.dll | 直接执行SQL(需权限) |
| Kingdee.BOS.Core.QueryHelper | Kingdee.BOS.ServiceHelper.dll | 构建查询方案工具 |
AbstractBillPlugIn 类核心 API 清单
| 方法名 | 参数类型 | 返回值 | 极简说明 |
|---|---|---|---|
| AfterBindData | EventArgs e | void | 数据绑定后,加载界面数据后执行 |
| BeforeBindData | EventArgs e | void | 数据绑定前,准备数据前执行 |
| AfterDoOperation | DoOperationEventArgs e | void | 操作执行后(如保存、审核) |
| BeforeDoOperation | DoOperationEventArgs e | void | 操作执行前,验证业务前执行 |
| BarItemClick | BarItemClickEventArgs e | void | 工具栏按钮点击事件处理 |
| AfterSave | SaveEventArgs e | void | 保存后,数据持久化后执行 |
| BeforeSave | SaveEventArgs e | void | 保存前,数据校验前执行 |
| AfterCreateNewData | CreateNewEventArgs e | void | 新建数据后,初始化后执行 |
| BeforeCreateNewData | CreateNewEventArgs e | void | 新建数据前,预设默认值前执行 |
| AfterLoad | EventArgs e | void | 加载单据后,整个视图加载后 |
| BeforeLoad | EventArgs e | void | 加载单据前,准备视图前执行 |
说明:以上为金蝶云·星空BOS平台中AbstractBillPlugIn(继承自AbstractDynamicFormPlugIn)的核心可重写方法,覆盖单据生命周期90%插件场景(如数据操作、按钮事件)。完整继承链:AbstractBasePlugIn → AbstractDynamicFormPlugIn → AbstractBillPlugIn。使用时需override并调用base方法。
金蝶云·星空 AbstractBillPlugIn 中操作 DOM 元素、页面提示、用户信息、刷新页面的核心 API 清单
(2023–2025 版本通用,全部在插件内部 this.View、this.Context 中直接调用)
| 分类 | API 全路径(最常用写法) | 返回值 | 极简说明(用途) |
|---|---|---|---|
| 获取当前登录用户信息 | this.Context.CurrentOrganizationInfo.FunctionalCurrencyId | long / string | 当前组织本位币ID |
| this.Context.UserId | long | 当前登录用户内码 | |
| this.Context.UserName | string | 当前登录用户名 | |
| this.Context.UserToken | string | 当前登录Token(调用API时常用) | |
| this.Context.CurrentOrganizationInfo.ID | long | 当前组织内码 | |
| this.Context.CurrentOrganizationInfo.Name | string | 当前组织名称 | |
| 页面提示 MessageBox | this.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 = false | void | 隐藏控件/面板 |
| this.View.GetControl("FButton").Enabled = false | void | 禁用按钮 | |
| 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方法,该方法允许调用前设置默认值,当查询返回为空的时候以默认值替代返回的空值。