10K3CloudV30BOS技术开发培训二次插件开发课件_第1页
10K3CloudV30BOS技术开发培训二次插件开发课件_第2页
10K3CloudV30BOS技术开发培训二次插件开发课件_第3页
10K3CloudV30BOS技术开发培训二次插件开发课件_第4页
10K3CloudV30BOS技术开发培训二次插件开发课件_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

K/3产品部K/3CloudV1.0技术开发培训

----BOS业务插件开发K/3产品部K/3CloudV1.0技术开发培训

---课程简介:

本课程介绍K/3

CloudBOS业务插件的开发及配置,以功能讲解辅之案例演练帮助学员快速掌握K/3

Cloud

BOS平台的核心功能。

讲师:肖光雁课程说明:课程简介:课程说明:概述业务插件概览如何开发插件案例演练目录概述目录概述业务插件概览如何开发插件案例演练目录概述目录K/3Cloud分层架构图展示层SilverlightWeb客户端WPF桌面客户端服务层动态表单UI生成服务内核层表单动态生成引擎动态表单控制服务Web服务器动态表单视图模型动态表单控制器动态表单数据模型扩展逻辑层动态表单编程接口表单生成插件表单逻辑服务表单操作缺省值计算函数业务插件动态表单元数据应用服务器动态表单逻辑组件动态表单服务端插件动态表单服务端编程接口数据库服务器元数据业务数据校验规则客户端公共编程模型+客户端插件+第三方设备集成接口移动客户端Office客户端HttpHttp业务服务K/3Cloud分层架构图展示层Silverlight概述业务插件概览如何开发插件案例演练目录概述目录BOS业务插件用以解决什么问题?标准业务对象的的业务逻辑应用:标准业务对象没有实现的控制;已有操作和服务未支持的功能;更灵活的控制方式和客户化定制;客户二次开发的需求;快速开发、快速实施、快速应用;可配置,可测试,快速部署;有哪些插件?Web层表单插件列表插件表单构建插件App层服务插件BOS业务插件开发概览BOS业务插件用以解决什么问题?BOS业务插件开发概览插件接口特性使用C#4.0支持继承和扩展已封装业务插件;组织控制;基础资料分配………支持插件顺序支持动态语言IronPython2.6.1BOS业务插件开发概览插件接口特性BOS业务插件开发概览BOS业务插件开发概览—插件分类表单插件用于单个表单编辑界面运行于Web层列表插件用于列表

运行于Web层BOS业务插件开发概览—插件分类表单插件BOS业务插件开发概览–插件分类服务插件挂在操作上的服务插件,对于操作进行扩展和校验器配合使用运行于App层插件配置入口

操作列表–编辑操作BOS业务插件开发概览–插件分类服务插件BOS业务插件开发概览–插件分类表单构建插件对于表单界面进行自定义的插件运行于Web层自定义菜单、控件BOS业务插件开发概览–插件分类表单构建插件BOS业务插件开发概览动态表单元数据结构BOS业务插件开发概览动态表单元数据结构BOS业务插件开发概览动态表单元数据结构BOS业务插件开发概览动态表单元数据结构概述业务插件概览如何开发插件接口结构插件中常用的对象说明具体的代码示例案例演练目录概述目录概述业务插件概览如何开发插件接口结构插件中常用的对象说明具体的代码示例案例演练目录概述目录如何开发插件–接口结构表单插件和列表插件继承层次表单单据单据列表基础资料插件针对对象动态表单单据基础资料Kingdee.BOS.Core.dll如何开发插件–接口结构表单插件和列表插件继承层次如何开发插件–接口结构AbstractBillPlugIn接口动态表单视图插件编程模型接口定义了视图模型扩展允许通过接口处理视图,实现特定业务需求如何开发插件–接口结构AbstractBillPlugI如何开发插件–接口结构OnBillInitialize

视图模型初始化事件AfterBindData

绑定数据后事件处理接口BeforeF7Select基础资料弹出前事件BeforeClosed窗口关闭前事件AbstractBillPlugIn的ViewPlugin插件接口如何开发插件–接口结构OnBillInitializeA如何开发插件–接口结构BarItemClick

菜单单击事件处理扩展接口AfterBarItemClick

菜单单击事件后BeforeDoOperation

操作调用前事件AfterDoOperation

操作调用完成后事件ButtonClick

按钮单击事件AfterButtonClick

按钮单击后事件AbstractBillPlugIn的ViewPlugin插件接口如何开发插件–接口结构BarItemClickAbstr如何开发插件–接口结构ListViewClick

列表项目单击事件TreeNodeClick

树控件单击事件TreeDragDrop

树控件拖拽EntityRowClick

分录行单击事件AbstractBillPlugIn的ViewPlugin插件接口如何开发插件–接口结构ListViewClickAbst如何开发插件–接口结构AbstractBillPlugIn的ModelPlugIn接口动态表单数据模型插件编程接口定义了数据模型扩展允许通过接口处理数据,以实现特定业务需求如何开发插件–接口结构AbstractBillPlugI如何开发插件–接口结构CreateNewData

数据模型创建实体对象事件AfterCreateNewData

数据模型创建实体对象完成后事件BeforeUpdateValue

数据更新前事件DataChanged

数据改变后事件AbstractBillPlugIn插件方法如何开发插件–接口结构CreateNewDataAbst如何开发插件–接口结构CreateNewEntryRow

创建分录行事件BeforeDeleteRow

删除分录行事件AfterDeleteRow

删除分录后事件AbstractBillPlugIn插件方法如何开发插件–接口结构CreateNewEntryRow如何开发插件–接口结构列表插件接口继承AbstractListPlugInIListViewPlugInIListModelPlugIn如何开发插件–接口结构列表插件接口继承AbstractL如何开发插件–接口结构AbstractListPlugIn的ViewPlugIn接口序时簿视图插件编程模型接口定义了序时簿视图模型扩展允许通过接口处理视图,实现特定业务需求如何开发插件–接口结构AbstractListPlugI如何开发插件–接口结构ListInitialize

视图模型初始化事件AfterGetData

完成取数后事件FormatCellValue

列表格式化接口AbstractListPlugIn的ViewPlugIn接口如何开发插件–接口结构ListInitializeAbs如何开发插件–接口结构BeforeButtonClick

按钮和菜单单击前事件AfterButtonClick

按钮和菜单单击后事件CellDbButtonClick

单元格双击事件AbstractListPlugIn的ViewPlugIn接口如何开发插件–接口结构BeforeButtonClick如何开发插件–接口结构AbstractListPlugIn的ModelPlugIn接口序时簿数据模型插件编程接口定义了序时簿数据模型扩展允许通过接口处理数据,以实现特定业务需求如何开发插件–接口结构AbstractListPlugI如何开发插件–接口结构PrepareFilterParameter

准备过滤条件CreateFilterEditorControl

触发创建过滤条件控件事件BatchCopyData

复制单据事件AfterBatchCopyData

复制单据完毕事件AbstractListPlugIn插件方法如何开发插件–接口结构PrepareFilterPara如何开发插件–接口结构服务插件插件特性IOperationServicePlugin一般会附加校验器运行于App层事务保护插件针对对象操作Kingdee.BOS.Core.dll如何开发插件–接口结构服务插件插件特性如何开发插件–接口结构服务插件接口服务插件AbstractOperationServicePlugIn应用服务器插件与业务数据更新操作在一个事务执行校验器插件AbstractValidator在服务插件的OnAddValidators加入如何开发插件–接口结构服务插件接口服务插件如何开发插件–接口结构AbstractOperationServicePlugIn插件方法OnPreparePropertys

可以定制加载指定字段到实体里OnAddValidators

添加自定义数据校验器如何开发插件–接口结构AbstractOperation如何开发插件–接口结构AbstractOperationServicePlugIn插件方法BeforeExecuteOperationTransaction

执行操作事务前事件AfterExecuteOperationTransaction

执行操作事务后事件BeginOperationTransaction

调用操作事件前触发(支持事务)EndOperationTransaction

调用操作事件完毕(支持事务)如何开发插件–接口结构AbstractOperation如何开发插件–接口结构表单构建插件继承层次表单单据叙事簿基础资料插件针对对象动态表单单据基础资料Kingdee.BOS.Core.dll如何开发插件–接口结构表单构建插件继承层次如何开发插件–接口结构AbstractDynamicWebFormBuilderPlugIn插件方法CreateControl

构建界面元素事件AfterCreateControl

构建界面元素后事件CreateMainMenu

构建菜单事件AfterCreateMainMenu

构建菜单后事件如何开发插件–接口结构AbstractDynamicWe如何开发插件–接口结构表单插件调用过程由控制器创建视图、模型、插件代理初始化视图、模型由插件服务注册到插件代理插件代理初始化插件加载数据,通知插件创建数据,创建表单数据包表单操作插件服务调用代理,发送事件通知插件代理调用插件,执行事件返回执行结果如何开发插件–接口结构表单插件调用过程由控制器创建视图、业务插件插件调用过程业务插件插件调用过程业务插件插件调用过程业务插件插件调用过程如何开发插件–接口结构动态语言支持IronPython脚本语言支持和C#交互调用事件接口和C#完全一致更加简练明白如何开发插件–接口结构动态语言支持IronPython概述业务插件概览如何开发插件接口结构插件中常用的对象说明具体的代码示例案例演练目录概述目录如何开发插件–常用对象View对象属性this.View(View接口)this.View的常用属性BillBusinessInfo(界面业务对象元数据)LayoutInfo(布局元数据)Model(动态表单模型接口)OpenParameter(页面调用时传入的参数)方法GetFieldEditor(获取界面控件对象)ShowMessage(显示信息)如何开发插件–常用对象View对象属性如何开发插件–常用对象View对象更改界面控件状态this.View.GetFieldEditor示例:

///

<summary>

///

设置金额列精度

///

</summary>

///

<paramname="iScale"></param>

///

<paramname="strField"></param>

private

voidSetColumnScale(shortiScale,stringstrField){

this.View.GetFieldEditor<DecimalFieldEditor>(strField,-1).Scale=iScale;}如何开发插件–常用对象View对象更改界面控件状态如何开发插件–常用对象View对象显示信息this.View.ShowMessage示例:

if(e.CurParentId=="0"){

this.View.ShowMessage(“请先选择顶层组织。”);return;}如何开发插件–常用对象View对象显示信息if如何开发插件–常用对象Model对象属性this.View.Model(动态表单模型接口)This.View.Model的常用属性DataObject当前对象的数据实体方法GetEntryCurrentRowIndex(获取分录当前行索引)GetEntryRowCount(获取分录行数量)CreateNewEntryRow(新建分录行)GetValue(获取字段(对象)值)SetValue(设置字段(对象)值)如何开发插件–常用对象Model对象属性如何开发插件–常用对象Model对象获取单据属性:例如分录集合this.View.Model.DataObject示例:

///

<summary>

///获取分录集合

///

</summary>

DynamicObjectCollectionentrys=(DynamicObjectCollection)this.View.Model.DataObject["POOrderEntry"];如何开发插件–常用对象Model对象获取单据属性:例如分如何开发插件–常用对象Model对象新增单据体分录行this.View.Model.CreateNewEntryRow示例:

///

<summary>

///单据复制完成事件

///

</summary>

///

<paramname="e"></param>

public

override

voidAfterCopyData(CopyDataEventArgse){

base.AfterCopyData(e);

//单据复制完,处理单据体

_billFormID=“”;

this.View.Model.CreateNewEntryRow(“FFieldControl”);UpdateFieldControlRowLock();}如何开发插件–常用对象Model对象新增单据体分录行如何开发插件–常用对象Model对象获取字段值this.View.Model.GetValue示例:

//获取根节点组织复制到目标节点

Organizationorg=(DynamicObject)

this.View.Model.GetValue("FRootORGID");targetRoot.id=rootOrgId;targetRoot.text=org.Name.ToString();targetRoot.children=new

List<TreeNode>();ctl=this.View.GetControl<TreeView>("FOrgTree");ctl.SetRootNode(targetRoot);如何开发插件–常用对象Model对象获取字段值/如何开发插件–常用对象Model对象设置字段值this.View.Model.SetValue示例:///

<summary>///字段修改事件函数重载

///

</summary>public

override

voidDataChanged(DataChangedEventArgse){

switch(e.Key.ToUpper()){

case

"FPARENTDEPTID":

//组织隶属方案和上级部门变化,重新生成部门全称

this.View.Model.SetValue(“FFullName”,GetFullName(e.Key));

break;}}如何开发插件–常用对象Model对象设置字段值//概述业务插件概览如何开发插件接口结构插件中常用的对象说明具体的代码示例案例演练目录概述目录如何开发插件–代码示例表单插件OnBillInitialize初始化事件BillInitializeEventArgs示例:

publicoverridevoidOnBillInitialize(BillInitializeEventArgse)

{

base.OnBillInitialize(e);firstLoad=this.View.OpenParameter.Status!=OperationStatus.ADDNEW;

}如何开发插件–代码示例表单插件如何开发插件–代码示例表单插件AfterBindData绑定数据后事件示例:

publicoverridevoidAfterBindData(EventArgse)

{

base.AfterBindData(e);

DynamicObjectdy=this.View.Model.GetValue("FAccountBookID")asDynamicObject;

if(dy!=null&&!string.IsNullOrWhiteSpace(dy["Id"].ToString()))

{

DynamicObjectorg=dy["AccountOrgID"]asDynamicObject;

if(org!=null&&!string.IsNullOrWhiteSpace(org["Id"].ToString()))

{

this.View.Model.SetValue("FACCBOOKORGID",org);

}

}

}如何开发插件–代码示例表单插件publicoverr如何开发插件–代码示例表单插件BeforeClosed绑定数据后事件BeforeClosedEventArgs示例:publicoverridevoidBeforeClosed(BeforeClosedEventArgse)

{ReturnData();

base.BeforeClosed(e);

}如何开发插件–代码示例表单插件如何开发插件–代码示例表单插件BeforeF7SelectBeforeF7SelectEventArgs示例:

publicoverridevoidBeforeF7Select(BeforeF7SelectEventArgse)

{

base.BeforeF7Select(e);boolsuccess=true;switch(e.FieldKey.ToUpperInvariant())

{case"FACCOUNTORG":e.ListFilterParameter.Filter=this.GetAccountOrgFilter(e.ListFilterParameter.Filter,outsuccess);break;case"FACCOUNTBOOK":e.ListFilterParameter.Filter=this.GetAccountBookFilter(e.ListFilterParameter.Filter,outsuccess);break;

}e.Cancel=!success;

}如何开发插件–代码示例表单插件如何开发插件–代码示例表单插件ButtonClickButtonClickEventArgs示例:

publicoverridevoidButtonClick(ButtonClickEventArgse)

{

base.ButtonClick(e);switch(e.Key.ToUpperInvariant())

{case"FBTNOK":

this.StartDeposit();break;default:break;

}

}如何开发插件–代码示例表单插件publicoverr如何开发插件–代码示例表单插件DataChangedDataChangedEventArgs示例:

publicoverridevoidDataChanged(DataChangedEventArgse)

{

switch(e.Key.ToLowerInvariant())

{case"fdiffadjusttype":

case"fexpuniontype":SetEnableAndValue();

break;default:break;

}base.DataChanged(e);

}如何开发插件–代码示例表单插件public如何开发插件–代码示例动态语言支持IronPython示例:from

System

import

StringComparison

def

DataChanged(e):

if

e.Field.Key.Equals("FIsTrans",StringComparison.OrdinalIgnoreCase):

#isTrans=clr.Reference[bool]()

isTrans=e.NewValue

if

isTrans==

False

:

this.View.Model.SetValue("FPriority",

0)

如何开发插件–代码示例动态语言支持from

System如何开发插件–代码示例服务插件OnPreparePropertysPreparePropertysEventArgs示例:

publicoverridevoidOnPreparePropertys(PreparePropertysEventArgse)

{e.FieldKeys.Add("FAccountSystemEntry");e.FieldKeys.Add("FMAINORGID");e.FieldKeys.Add("FAPPACCTPOLICY");e.FieldKeys.Add("FDefAcctPolicy");

base.OnPreparePropertys(e);

}如何开发插件–代码示例服务插件如何开发插件–代码示例服务插件OnAddValidatorsAddValidatorsEventArgs示例:

publicoverridevoidOnAddValidators(AddValidatorsEventArgse)

{SaveValidatorsaveValid=newSaveValidator();saveValid.EntityKey="FBillHead";e.Validators.Add(saveValid);

SaveAfterAuditValidatorsaveAcctSysValid=newSaveAfterAuditValidator();saveAcctSysValid.option=this.Option;saveAcctSysValid.EntityKey="FBillHead";e.Validators.Add(saveAcctSysValid);

}如何开发插件–代码示例服务插件publicoverr如何开发插件–代码示例

privateclassSaveValidator:AbstractValidator

{publicoverridevoidValidate(ExtendedDataEntity[]dataEntities,ValidateContextvalidateContext,Contextctx)

{foreach(varacctindataEntities)

{AccountSystemdEntity=(AccountSystem)acct.DataEntity;if(dEntity==null)continue;foreach(varacctSysindEntity.AccountSystemEntrys)

{if(acctSys==null||acctSys.MainOrgId<=0)continue;if(!acctSys.AccountSystemDetails.Any(p=>p!=null&&p.SubOrgId>0))

{ValidationErrorInfoerrorInfo=newValidationErrorInfo("",dEntity.Id.ToString(),acct.DataEntityIndex,acct.DataEntityIndex,"BD",string.Format("核算组织【{0}】的下级组织不允许为空。",acctSys.MainOrgName.ToString()),string.Format("{0}【{1}】",dEntity.Name.ToString(),dEntity.Number));validateContext.AddError(null,errorInfo);

}

}

}

}

}如何开发插件–代码示例privateclassSa如何开发插件–代码示例表单构建插件CreateControl事件CreateControlEventArgs示例:

publicoverridevoidCreateControl(CreateControlEventArgse)

{

if(e.ControlAppearance.Key.EqualsIgnoreCase("FORGID"))

{

if(this.Context.IsMultiOrg==false)

{e.Control.Put("visible",0);

}

}

base.CreateControl(e);

}如何开发插件–代码示例表单构建插件publicove如何开发插件–接口结构表单插件如何开发插件–接口结构表单插件业务插件列表插件业务插件列表插件概述业务插件概览如何开发插件案例演练目录概述目录案例演练业务插件开发建立部门基础资料增加部门全名(带上级部门前缀,以点分隔)部门隶属关系变化后需要修改部门全名前缀建立员工基础资料增加禁用状态,不能在界面上用复制功能复制禁用员工案例演练业务插件开发建立部门基础资料演讲完毕,谢谢观看!演讲完毕,谢谢观看!K/3产品部K/3CloudV1.0技术开发培训

----BOS业务插件开发K/3产品部K/3CloudV1.0技术开发培训

---课程简介:

本课程介绍K/3

CloudBOS业务插件的开发及配置,以功能讲解辅之案例演练帮助学员快速掌握K/3

Cloud

BOS平台的核心功能。

讲师:肖光雁课程说明:课程简介:课程说明:概述业务插件概览如何开发插件案例演练目录概述目录概述业务插件概览如何开发插件案例演练目录概述目录K/3Cloud分层架构图展示层SilverlightWeb客户端WPF桌面客户端服务层动态表单UI生成服务内核层表单动态生成引擎动态表单控制服务Web服务器动态表单视图模型动态表单控制器动态表单数据模型扩展逻辑层动态表单编程接口表单生成插件表单逻辑服务表单操作缺省值计算函数业务插件动态表单元数据应用服务器动态表单逻辑组件动态表单服务端插件动态表单服务端编程接口数据库服务器元数据业务数据校验规则客户端公共编程模型+客户端插件+第三方设备集成接口移动客户端Office客户端HttpHttp业务服务K/3Cloud分层架构图展示层Silverlight概述业务插件概览如何开发插件案例演练目录概述目录BOS业务插件用以解决什么问题?标准业务对象的的业务逻辑应用:标准业务对象没有实现的控制;已有操作和服务未支持的功能;更灵活的控制方式和客户化定制;客户二次开发的需求;快速开发、快速实施、快速应用;可配置,可测试,快速部署;有哪些插件?Web层表单插件列表插件表单构建插件App层服务插件BOS业务插件开发概览BOS业务插件用以解决什么问题?BOS业务插件开发概览插件接口特性使用C#4.0支持继承和扩展已封装业务插件;组织控制;基础资料分配………支持插件顺序支持动态语言IronPython2.6.1BOS业务插件开发概览插件接口特性BOS业务插件开发概览BOS业务插件开发概览—插件分类表单插件用于单个表单编辑界面运行于Web层列表插件用于列表

运行于Web层BOS业务插件开发概览—插件分类表单插件BOS业务插件开发概览–插件分类服务插件挂在操作上的服务插件,对于操作进行扩展和校验器配合使用运行于App层插件配置入口

操作列表–编辑操作BOS业务插件开发概览–插件分类服务插件BOS业务插件开发概览–插件分类表单构建插件对于表单界面进行自定义的插件运行于Web层自定义菜单、控件BOS业务插件开发概览–插件分类表单构建插件BOS业务插件开发概览动态表单元数据结构BOS业务插件开发概览动态表单元数据结构BOS业务插件开发概览动态表单元数据结构BOS业务插件开发概览动态表单元数据结构概述业务插件概览如何开发插件接口结构插件中常用的对象说明具体的代码示例案例演练目录概述目录概述业务插件概览如何开发插件接口结构插件中常用的对象说明具体的代码示例案例演练目录概述目录如何开发插件–接口结构表单插件和列表插件继承层次表单单据单据列表基础资料插件针对对象动态表单单据基础资料Kingdee.BOS.Core.dll如何开发插件–接口结构表单插件和列表插件继承层次如何开发插件–接口结构AbstractBillPlugIn接口动态表单视图插件编程模型接口定义了视图模型扩展允许通过接口处理视图,实现特定业务需求如何开发插件–接口结构AbstractBillPlugI如何开发插件–接口结构OnBillInitialize

视图模型初始化事件AfterBindData

绑定数据后事件处理接口BeforeF7Select基础资料弹出前事件BeforeClosed窗口关闭前事件AbstractBillPlugIn的ViewPlugin插件接口如何开发插件–接口结构OnBillInitializeA如何开发插件–接口结构BarItemClick

菜单单击事件处理扩展接口AfterBarItemClick

菜单单击事件后BeforeDoOperation

操作调用前事件AfterDoOperation

操作调用完成后事件ButtonClick

按钮单击事件AfterButtonClick

按钮单击后事件AbstractBillPlugIn的ViewPlugin插件接口如何开发插件–接口结构BarItemClickAbstr如何开发插件–接口结构ListViewClick

列表项目单击事件TreeNodeClick

树控件单击事件TreeDragDrop

树控件拖拽EntityRowClick

分录行单击事件AbstractBillPlugIn的ViewPlugin插件接口如何开发插件–接口结构ListViewClickAbst如何开发插件–接口结构AbstractBillPlugIn的ModelPlugIn接口动态表单数据模型插件编程接口定义了数据模型扩展允许通过接口处理数据,以实现特定业务需求如何开发插件–接口结构AbstractBillPlugI如何开发插件–接口结构CreateNewData

数据模型创建实体对象事件AfterCreateNewData

数据模型创建实体对象完成后事件BeforeUpdateValue

数据更新前事件DataChanged

数据改变后事件AbstractBillPlugIn插件方法如何开发插件–接口结构CreateNewDataAbst如何开发插件–接口结构CreateNewEntryRow

创建分录行事件BeforeDeleteRow

删除分录行事件AfterDeleteRow

删除分录后事件AbstractBillPlugIn插件方法如何开发插件–接口结构CreateNewEntryRow如何开发插件–接口结构列表插件接口继承AbstractListPlugInIListViewPlugInIListModelPlugIn如何开发插件–接口结构列表插件接口继承AbstractL如何开发插件–接口结构AbstractListPlugIn的ViewPlugIn接口序时簿视图插件编程模型接口定义了序时簿视图模型扩展允许通过接口处理视图,实现特定业务需求如何开发插件–接口结构AbstractListPlugI如何开发插件–接口结构ListInitialize

视图模型初始化事件AfterGetData

完成取数后事件FormatCellValue

列表格式化接口AbstractListPlugIn的ViewPlugIn接口如何开发插件–接口结构ListInitializeAbs如何开发插件–接口结构BeforeButtonClick

按钮和菜单单击前事件AfterButtonClick

按钮和菜单单击后事件CellDbButtonClick

单元格双击事件AbstractListPlugIn的ViewPlugIn接口如何开发插件–接口结构BeforeButtonClick如何开发插件–接口结构AbstractListPlugIn的ModelPlugIn接口序时簿数据模型插件编程接口定义了序时簿数据模型扩展允许通过接口处理数据,以实现特定业务需求如何开发插件–接口结构AbstractListPlugI如何开发插件–接口结构PrepareFilterParameter

准备过滤条件CreateFilterEditorControl

触发创建过滤条件控件事件BatchCopyData

复制单据事件AfterBatchCopyData

复制单据完毕事件AbstractListPlugIn插件方法如何开发插件–接口结构PrepareFilterPara如何开发插件–接口结构服务插件插件特性IOperationServicePlugin一般会附加校验器运行于App层事务保护插件针对对象操作Kingdee.BOS.Core.dll如何开发插件–接口结构服务插件插件特性如何开发插件–接口结构服务插件接口服务插件AbstractOperationServicePlugIn应用服务器插件与业务数据更新操作在一个事务执行校验器插件AbstractValidator在服务插件的OnAddValidators加入如何开发插件–接口结构服务插件接口服务插件如何开发插件–接口结构AbstractOperationServicePlugIn插件方法OnPreparePropertys

可以定制加载指定字段到实体里OnAddValidators

添加自定义数据校验器如何开发插件–接口结构AbstractOperation如何开发插件–接口结构AbstractOperationServicePlugIn插件方法BeforeExecuteOperationTransaction

执行操作事务前事件AfterExecuteOperationTransaction

执行操作事务后事件BeginOperationTransaction

调用操作事件前触发(支持事务)EndOperationTransaction

调用操作事件完毕(支持事务)如何开发插件–接口结构AbstractOperation如何开发插件–接口结构表单构建插件继承层次表单单据叙事簿基础资料插件针对对象动态表单单据基础资料Kingdee.BOS.Core.dll如何开发插件–接口结构表单构建插件继承层次如何开发插件–接口结构AbstractDynamicWebFormBuilderPlugIn插件方法CreateControl

构建界面元素事件AfterCreateControl

构建界面元素后事件CreateMainMenu

构建菜单事件AfterCreateMainMenu

构建菜单后事件如何开发插件–接口结构AbstractDynamicWe如何开发插件–接口结构表单插件调用过程由控制器创建视图、模型、插件代理初始化视图、模型由插件服务注册到插件代理插件代理初始化插件加载数据,通知插件创建数据,创建表单数据包表单操作插件服务调用代理,发送事件通知插件代理调用插件,执行事件返回执行结果如何开发插件–接口结构表单插件调用过程由控制器创建视图、业务插件插件调用过程业务插件插件调用过程业务插件插件调用过程业务插件插件调用过程如何开发插件–接口结构动态语言支持IronPython脚本语言支持和C#交互调用事件接口和C#完全一致更加简练明白如何开发插件–接口结构动态语言支持IronPython概述业务插件概览如何开发插件接口结构插件中常用的对象说明具体的代码示例案例演练目录概述目录如何开发插件–常用对象View对象属性this.View(View接口)this.View的常用属性BillBusinessInfo(界面业务对象元数据)LayoutInfo(布局元数据)Model(动态表单模型接口)OpenParameter(页面调用时传入的参数)方法GetFieldEditor(获取界面控件对象)ShowMessage(显示信息)如何开发插件–常用对象View对象属性如何开发插件–常用对象View对象更改界面控件状态this.View.GetFieldEditor示例:

///

<summary>

///

设置金额列精度

///

</summary>

///

<paramname="iScale"></param>

///

<paramname="strField"></param>

private

voidSetColumnScale(shortiScale,stringstrField){

this.View.GetFieldEditor<DecimalFieldEditor>(strField,-1).Scale=iScale;}如何开发插件–常用对象View对象更改界面控件状态如何开发插件–常用对象View对象显示信息this.View.ShowMessage示例:

if(e.CurParentId=="0"){

this.View.ShowMessage(“请先选择顶层组织。”);return;}如何开发插件–常用对象View对象显示信息if如何开发插件–常用对象Model对象属性this.View.Model(动态表单模型接口)This.View.Model的常用属性DataObject当前对象的数据实体方法GetEntryCurrentRowIndex(获取分录当前行索引)GetEntryRowCount(获取分录行数量)CreateNewEntryRow(新建分录行)GetValue(获取字段(对象)值)SetValue(设置字段(对象)值)如何开发插件–常用对象Model对象属性如何开发插件–常用对象Model对象获取单据属性:例如分录集合this.View.Model.DataObject示例:

///

<summary>

///获取分录集合

///

</summary>

DynamicObjectCollectionentrys=(DynamicObjectCollection)this.View.Model.DataObject["POOrderEntry"];如何开发插件–常用对象Model对象获取单据属性:例如分如何开发插件–常用对象Model对象新增单据体分录行this.View.Model.CreateNewEntryRow示例:

///

<summary>

///单据复制完成事件

///

</summary>

///

<paramname="e"></param>

public

override

voidAfterCopyData(CopyDataEventArgse){

base.AfterCopyData(e);

//单据复制完,处理单据体

_billFormID=“”;

this.View.Model.CreateNewEntryRow(“FFieldControl”);UpdateFieldControlRowLock();}如何开发插件–常用对象Model对象新增单据体分录行如何开发插件–常用对象Model对象获取字段值this.View.Model.GetValue示例:

//获取根节点组织复制到目标节点

Organizationorg=(DynamicObject)

this.View.Model.GetValue("FRootORGID");targetRoot.id=rootOrgId;targetRoot.text=org.Name.ToString();targetRoot.children=new

List<TreeNode>();ctl=this.View.GetControl<TreeView>("FOrgTree");ctl.SetRootNode(targetRoot);如何开发插件–常用对象Model对象获取字段值/如何开发插件–常用对象Model对象设置字段值this.View.Model.SetValue示例:///

<summary>///字段修改事件函数重载

///

</summary>public

override

voidDataChanged(DataChangedEventArgse){

switch(e.Key.ToUpper()){

case

"FPARENTDEPTID":

//组织隶属方案和上级部门变化,重新生成部门全称

this.View.Model.SetValue(“FFullName”,GetFullName(e.Key));

break;}}如何开发插件–常用对象Model对象设置字段值//概述业务插件概览如何开发插件接口结构插件中常用的对象说明具体的代码示例案例演练目录概述目录如何开发插件–代码示例表单插件OnBillInitialize初始化事件BillInitializeEventArgs示例:

publicoverridevoidOnBillInitialize(BillInitializeEventArgse)

{

base.OnBillInitialize(e);firstLoad=this.View.OpenParameter.Status!=OperationStatus.ADDNEW;

}如何开发插件–代码示例表单插件如何开发插件–代码示例表单插件AfterBindData绑定数据后事件示例:

publicoverridevoidAfterBindData(EventArgse)

{

base.AfterBindData(e);

DynamicObjectdy=this.View.Model.GetValue("FAccountBookID")asDynamicObject;

if(dy!=null&&!string.IsNullOrWhiteSpace(dy["Id"].ToString()))

{

DynamicObjectorg=dy["AccountOrgID"]asDynamicObject;

if(org!=null&&!string.IsNullOrWhiteSpace(org["Id"].ToString()))

{

this.View.Model.SetValue("FACCBOOKORGID",org);

}

}

}如何开发插件–代码示例表单插件publicoverr如何开发插件–代码示例表单插件BeforeClosed绑定数据后事件BeforeClosedEventArgs示例:publicoverridevoidBeforeClosed(BeforeClosedEventArgse)

{ReturnData();

base.BeforeClosed(e);

}如何开发插件–代码示例表单插件如何开发插件–代码示例表单插件BeforeF7SelectBeforeF7SelectEventArgs示例:

publicoverridevoidBeforeF7Select(BeforeF7SelectEventArgse)

{

base.BeforeF7Select(e);boolsuccess=true;switch(e.FieldKey.ToUpperInvariant())

{case"FACCOUNTORG":e.ListFilterParameter.Filter=this.GetAccountOrgFilter(e.ListFilterParameter.Filter,outsuccess);break;case"FACCOUNTBOOK":e.ListFilterParameter.Filter=this.GetAccountBookFilter(e.ListFilterParameter.Filter,outsuccess);break;

}e.Cancel=!success;

}如何开发插件–代码示例表单插件如何开发插件–代码示例表单插件ButtonClickButtonClickEventArgs示例:

publicoverridevoidButtonClick(ButtonClickEventArgse)

{

base.ButtonClick(e);switch(e.Key.ToUpperInvariant())

{case"FBTNOK":

this.StartDeposit();break;default:break;

}

}如何开发插件–代码示例表单插件publicoverr如何开发插件–代码示例表单插件DataChangedDataChangedEventArgs示例:

publicoverridevoidDataChanged(DataChangedEventArgse)

{

switch(e.Key.ToLowerInvariant())

{case"fdiffadjusttype":

case"fexpuniontype":SetEnableAndValue();

break;default:break;

}base.DataChanged(e);

}如何开发插件–代码示例表单插件public如何开发插件–代码示例动态语言支持IronPython示例:from

System

import

StringComparison

def

DataChanged(e):

if

e.Field.Key.Equals("FIsTrans",StringComparison.OrdinalIgnoreCase):

#isTrans=clr.Reference[bool]()

isTrans=e.NewValue

if

isTrans==

False

:

this.View.Model.SetValue("FPriority",

0)

如何开发插件–代码示例动态语言支持from

System如何开发插件–代码示例服务插件OnPreparePropertysPreparePropertysEventArgs示例:

publicoverridevoidOnPreparePropertys(PreparePropertysEventArgse)

{e.FieldKeys.Add("FAccountSystemEntry");e.FieldKeys.Add("FMAINORGID");e.FieldKeys.Add("FAPPACCTPOLICY");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论