执行顺序,学习整理原创
金蝶云社区-李时真推拿
李时真推拿
3人赞赏了该文章 186次浏览 未经作者许可,禁止转载编辑于2024年08月28日 17:45:47
summary-icon摘要由AI智能服务提供

本文档详细描述了在不同场景下,插件在动态表单、单据操作、单据列表、单据转换、单据反写、报表取数、打印以及引入引出等过程中的事件执行顺序及作用。涉及了界面初始化、数据包处理、用户交互、资源释放等多个方面的事件,包括界面显示前的准备、表单视图的初始化、用户点击事件的触发、数据包的创建与加载、数据的校验与提交、界面关闭与资源释放等。同时,针对单据和列表插件,还具体描述了其在添加字段、设置过滤器、处理列表显示列、构建取数器、过滤条件调整等方面的操作。此外,还涉及了单据转换与反写、报表取数及打印等高级功能的事件处理。文档最后还提到了引入引出过程中的事件,包括Excel文件的解析、数据导入与导出、引入前后的处理等。

事件执行顺序

一、动态表单

界面打开前事件:

1 setPluginName 显示界面前,准备构建显示参数之前,创建插件后,触发此事件;;js代码触发

2 preOpenForm 显示界面前,准备构建显示参数之前,触发此事件;;设置是否有权限打开页面、设置是否触发什么事件、设置显示界面的标题

3 loadCustomControlMetas 显示界面前,构建界面显示参数时,触发此事件;;动态添加控件


界面初始化

 4 setView 表单视图模型初始化,创建插件时,调用此方法,向插件传入表单视图模型IFormViem实例;

5 initialize 表单视图模型初始化,创建插件后,触发此事件

6 registerListener 用户与界面交互时,触发此事件;用于注册监听

7 getEntityType 表单基于实体模型,创建数据包之前,触发此事件

8 createNewData 界面初始化或刷新,开始新建数据包时触发此事件

9 afterCreateNewData 界面初始化或刷新,新建数据包完毕后,触发此事件;新增页面打开后设置默认值;从列表打开/下推/列表引入 不会进入该事件

10 beforeBindData 界面数据包构建完毕,开始生成指令,刷新前端字段值、控件状态之前,触发此事件

11 afterBindData 界面数据包构建完毕,生成指令,刷新前端字段值、控件状态之后,触发此事件;修改控件的锁定性、可见性、颜色,禁止修改从数据库加载的字段值;;可给无字段名的动态赋值;从新增和列表进入都会触发。


用户交互(无先后顺序)

12 beforeItemClick 用户点击界面菜单按钮时,执行绑定的操作之前,触发此事件;工具栏点击事件,注意监听工具栏而不是按钮

13 itemClick 用户点击界面菜单按钮时,触发此事件

14 beforeDoOperation 用户点击按钮、菜单、执行绑定的操作前,触发此事件;用于校验

15 afterDoOperation 用户点击按钮、菜单、执行绑定的操作后,不论成功与否,均会触发此事件

16 comfirmCallBack 前端交互提示确认后,通知插件进行后续处理

17 closedCallBack 子页面关闭时,如果回调函数由父界面进行处理,则会触发父界面的此事件

18 beforeClick 用户点击按钮、标签、执行绑定的操作前,触发此事件;用于校验,判断当前登录人是单据的创建人,按钮可以走click……

19 click 用户点击界面按钮或者标签时触发此事件

20 flexBeforeClosed 弹性域维护界面关闭时,触发父界面此事件

21 onGetControl 在现有代码尝试获取控件的变成模型时,触发此事件

22 customEvent 触发自定义控件的定制事件;后端响应自定义控件前端的请求

23 timerElapsed 定时触发此事件

24 afterDeleteRow 删除单据体行后触发此事件

25 afterAddRow 新增单据体行后触发此事件

26 propertyChanged 字段值更新后触发此事件

27 beforeF7Select F7字段打开时触发事件

界面关闭

 28 beforeClosed 界面关闭之前触发此事件

29 destory 界面关闭之后,释放资源时,触发此事件

30 pageRelease 界面关闭之后,释放资源时,触发此事件


单据插件比界面插件多一个事件:

afterLoadData

单据界面加载完毕,会根据传入的单据主键值,到数据库加载单据数据包。本事件在单据数据包加载完毕后触发。插件可以在此事件,根据单据的数据决定业务逻辑的执行。


afterLoadData事件与afterCreateNewData的差别:


1. 这两个事件的触发时机一样,都是在界面数据包准备完毕之后触发,但数据包来源不同:

2. afterCreateNewData事件的数据包,是全新创建的数据包,适合在此事件调整默认值;

3. afterLoadData事件的数据包,来自于数据库,不建议在此事件修改字段值;

4. 这两个事件,在单据界面加载、刷新过程中,只会触发其中一个(互斥)

5. 单据界面以新增模式打开,不需要到数据库加载单据,触发afterCreateNewData事件;

6. 单据界面以修改、查看模式打开,需到数据库加载单据,触发afterLoadData事件。


二、单据操作插件执行顺序:

onPreparePropertys  添加需要用到的字段

onAddValidators  系统预置操作校验器加载完,执行校验前

beforeExecuteOperationTransaction 校验通过后,开启事务前

beginOperationTransaction 开启事务后,提交到数据库前;不能在此事件直接跨库更新数据,跨库需采用KDTX框架实现数据一致性;勿在此事件检查数据合法性;勿通过 e.setCancelOperation(true)取消操作,调用此方法不会回滚已更新的关联数据,会破坏数据一致性

endOperationTransaction 提交数据库后,事务未提交前

rollbackOperationTransaction 事务提交失败,回滚后

afterExecuteOperationTransaction 事务提交后

setContext 设置上下文

initializeOperationResult 初始化操作结果集

onReturnOperation 操作结束


 


三、单据列表插件

列表初始化

createTreeListView 不触发,仅树形列表界面,会触发此事件

 filterContainerInit 初始化过滤控件时,触发此事件,把配置的过滤字段传递给插件;;设置过滤控件默认值

 beforeCreateListColumns 在构建列表列之前触发,传入当前待创建的列分组、列;根据页面参数、过滤条件,动态添加、删除单据列表的显示列;刷新单据列表,构建单据列表显示的列时,触发此事件,传入在设计器中已配置的列集合

 beforeCreateListDataProvider 列表初始化,构建列表取数器前触发此事件;可以自定义获取来自不同数据库的数据

 setFilter 列表在生成了过滤条件之后,准备查询数据之前,触发此事件;;可以调整过滤条件内容、追加条件,从而影响列表取数

 beforePackageData 包装数据前,需要遍历这个数据包,用于格式化数据 注意:不要修改基础资料的引用属性,因为会打 乱缓存数据,此方法只适合非基础资料字段修改

 packageData 包装数据,单元格填值,用于格式化数据;列表初始化,或者列表重新加载时,可以对指定单元格赋值,对已审核状态的数据锁定操作项,不允许操作。


用户交互


1. billListHyperLinkClick 点击超链接单元格时,触发此事件;判断点击的列,取消单据界面打开,自行显示其它界面。

2. filterContainerSearchClick 用户修改了快捷过滤、常用过滤条件,或者点击过滤面板确定按钮,触发此事件;调整用户在过滤面板上的条件配置,后续系统会根据调整后的条件配置,生成取数条件。

3. beforeShowBill 执行新建、修改、查看等操作,打开单据维护界面之 前,触发此事件

4. billClosedCallBack 列表打开的单据维护界面关闭后返回时,触发此事件

5.listRowClick 列表行点击时,触发此事件

6. listRowDoubleClick 列表行双击时,触发此事件 

7.filterContainerAfterSearchClick 过滤容器搜索点击后的处理方法,此事件发生在过滤条 件解析后,主要用于点击过滤条件时联动修改其他过 滤字段控件, 修改前已先在filterContainerInit事件将 修改的字段用全局变量进行缓存

8.filterContainerBeforeF7Select 过滤容器内F7弹出前的处理方法 

9.filterColumnSetFilter 过滤字段上的基础资料字段过滤条件调整事件 

10.baseDataColumnDependFieldSet 设置常用过滤的基础资料依赖字段 

11.setCellFieldValue 设置单元格指令



四、单据转换插件


initVariable

初始化变量事件

用来增加一些必要的变量

afterBuildQueryParemeter

构建取数参数后事件

添加额外的字段、过滤条件

beforeBuildRowCondition

编译数据筛选条件前事件

取消或增加自定义过滤条件

beforeGetSourceData

取源单数据前事件

修改取数语句和取数条件

afterGetSourceData

取源单数据后事件

根据源单数据获取其他定制数据,或替换系统获取到的数据

beforeBuildGroupMode

构建分单、行合并模式之前事件

可更改分单合并策略及依赖字段

beforeCreateTarget

只在选单时触发

获取到现有的目标单数据包进行定制处理

afterCreateTarget

只在下推时触发


afterFieldMapping

目标字段赋值完毕后事件

对目标单字段值进行修订、计算、汇总等

beforeCreateLink

记录关联关系前事件

可取消记录关联关系

afterCreateLink

记录关联关系后事件

根据源单信息重新计算目标单据其它非转换携带字段的逻辑

afterConvert

单据转换完毕事件,最后执行

对生成的目标单据数据进行最后的调整

五、单据反写插件

beforeTrack   本关联主实体全部关联记录前,取消关联、反写

beforeCreateArticulationRow 本关联主实体,单行数据与源单的关联记录前,取消本行的关联、反写

 beforeExecWriteBackRule 开始分析反写规则,计算反写量前,取消当前反写规则的执行!

afterCalcWriteValue 基于下游单据当前行,反写值计算完毕后,修正反写量,调整对各源单行的分配量

afterCommitAmount 执行反写规则,把当前反写量反写到源单行之后,对源单行进行连锁更新。

beforeExcesscheck 对源单反写完毕,超额检查,可取消超额检查。

afterExcessCheck 超额检査完毕后,控制是否中止反写、提示超额,修正提示内容


六、报表取数插件

事件
说明
query
query事件用于对数据列操作
getColumns
getColumns事件里可以对指定的列属性修改


报表界面插件

方法

说明

filterContainerInit

初始化过滤容器触发方法

filterContainerBeforeF7Select

过滤容器内F7弹出前的处理方法

initDefaultQueryParam

初始化默认查询参数

processRowData

行数据处理

说明:参数gridPK为表格控件标识,参数rowData为一页数据,参数queryParam为查询参数

packageData

打包数据给前端时触发

formatDisplayFilterField

格式化主界面显示的筛选过滤字段信息

verifyQuery

查询前条件验证

beforeQuery

查询前置处理

afterQuery

查询后置处理

afterCreateColumn

表格列创建完成后置事件



七、打印


beforeLoadData事件:读取数据前,取消系统默认的读取数据的动作。


customPrintDataEntities事件:对系统读取的数据集进行加工或者构造自定义数据包,打印自定义的字段,重新提供数据


beforeOuputElement事件:设置自定义控件不打印


afterOutputElement事件:调样式,根据控件值不同,打印不同样式


addDynamicColumns:一列分多列



引入引出



resolveExcel解折excel,并将数据放入缓存队列

importData 从队列分批取数

initlmportData 初始化导入数据

执行Save导入数据;引入失败可以自定义设置引入日志

beforelmportData后保存到数据模型执行:引入数据填写之前触发的事件。批量处理时,每张单据触发一次:插件可以对本次引入的源单数报包,进行修订;或者取消本单引入

afterlmportData后保存到数据库;引入数据填写完毕之后,保存数据到数据模型,保存数据库前触发的事件,批量处理时,每张单据触发一次

,可在此事件进行单据的关联操作(建立关联关系,联查,反写等)


  


IDataModel提供的常用方法



getDataEntityType* 获取运行时表单实体元数据对象,又称为主实体模型

getProperty*获取运行时字段元数据对象,又称为实体的属性对象

createNewData 根据表单主实体模型,创建表单新的数据包,字段填写好默认值

getDataEntity*获取表单数据包

updateCache *提交当前表单数据包到缓存










赞 3