U8开发之UAP表单.docx
《U8开发之UAP表单.docx》由会员分享,可在线阅读,更多相关《U8开发之UAP表单.docx(26页珍藏版)》请在冰豆网上搜索。
![U8开发之UAP表单.docx](https://file1.bdocx.com/fileroot1/2022-12/7/e7878752-27fa-42ff-aa49-1c77dff5c146/e7878752-27fa-42ff-aa49-1c77dff5c1461.gif)
U8开发之UAP表单
UAP表单
一、功能概述
UAP表单为U8产品增加了自定义单据和档案的能力。
并为单据和档案提供了全方位的功能支持,包括:
增、删、改、查、打、审、格式设计。
在实施过程中,可以为用户定制个性化的单据和档案。
1、UAP表单据包括BS表单和CS表单。
两者的区别只是在客户端的展现形式不同。
CS表单适用于局域网,BS表单适用于局域网和互联网。
2、使用UAP定义的单据,可以实现多子表、多布局视图。
3、使用UAP定义的档案,支持复杂档案、列表档案、树型编辑档案(形如部门档案)、树形导航档案(形如人员档案)
4、使用UAP定义的档案可以在U8单据格式设置中引用
5、UAP提供了完善的插件机制,用于个性化开发。
UAP表单允许开发人员进行扩展性和取代性的开发工作。
二、核心特性
1.支持树形结构的业务实体。
2.支持业务模型的一个实体对应多个视图,一个视图只能对应一个业务实体。
3.支持一个业务实体属性对应多个视图控件。
4.丰富的客户端展现:
多子表、分组、页签。
5.表单和业务模型是一对一的关系。
6.与门户集成。
7.视图在表单上支持自由布局。
8.业务逻辑层(M)、界面层(V)、业务逻辑和界面之间的控制层(C)互相分离。
9.支持运行时多语。
10.支持用户自定义控件。
三、集成的开发工具及案例
1、开发工具概述
a)用户通过开发工具实现单据的通用性定制,如单据名称,主子表名称,主子表列的名称、类型等属性,单据的格式设置等。
b)集成开发环境中BS单据和CS单据的开发步骤和过程都是相同的。
2、操作步骤
1、UAP登录
2、建立项目
3、建立表单
4、建立实体关系
5、增加实体属性
6、设计单据布局
7、单据发布
8、在U8中显示表单
四、二次开发接口说明
4.1开发接口概述
在集成开发环境中已经可以实现自定义单据和档案的增、删、改、查等通用操作,但更加个性化的操作和业务逻辑,就需要通过代码调用接口,可以在下面操作的接口中实现。
4.1二次开发流程
1)安装MicrosoftVisualStudio
2)创建一个C#类库(.dll)项目
3)为项目添加引用:
⏹UFIDA.U8.Framework.Error
⏹UFIDA.U8.UAP.UI.Runtime.Model
⏹UFIDA.U8.UAP.UI.Runtime.Common
4)添加一个类,并实现接口IReceipt
⏹publicclassPurchaseOrder:
IReceipt
5)实现业务逻辑
6)编译工程,得到一个dll
7)在UAP设计时中注册dll。
4.2BS单据接口说明
///
///在进入单元格编辑状态之前判断单元格是否可编辑
///
///单元格信息
///所属业务对象
///所属表单对象
///是否可编辑,true:
可编辑,false:
不可编辑
boolCellEditing(CellSelectEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///值更新之前的接口,对值的合法性检查在这里进行
///Cell的值变动参数
///所属业务对象
///所属表单对象
///是否允许更新单元格的值,false--不允许更新,将保持原值
///
boolCellChanging(CellChangeEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///值更新之后的接口,对值的后续处理(如对其他Cell值的变更)在这里进行
///Cell的值变动参数
///所属业务对象
///所属表单对象
///
voidCellChanged(CellChangeEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///增加行之前的接口,对行的合法性检查在这里进行
///新增的行参数
///所属业务对象
///所属表单对象
///是否允许增加新行,false-不允许增加新的行
///
boolRowAdding(RowChangeEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///增加行之后的接口,对新增行的后续处理在这里进行
///新增的行参数
///所属业务对象
///所属表单对象
///
voidRowAdded(RowChangeEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///复制行之前的接口,对行的合法性检查在这里进行
///复制的行参数
///所属业务对象
///所属表单对象
///是否允许增加新行,false-不允许增加新的行
///
boolRowCopying(RowChangeEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///复制行之后的接口,对复制行的后续处理在这里进行
///复制的行参数
///所属业务对象
///所属表单对象
///
voidRowCopyed(RowChangeEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///删除行之前的接口,对行的合法性检查在这里进行
///RowChangeEventArgs[]类型,要删除的行参数
///所属业务对象
///所属表单对象
///是否允许删除这些行,false--不允许删除这些行
///
boolRowsDeleting(RowChangeEventArgs[]para,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///删除行之后的接口,对删除行的后续处理在这里进行
///RowChangeEventArgs[]类型,要删除的行参数
///所属业务对象
///所属表单对象
///
voidRowsDeleted(RowChangeEventArgs[]para,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///观察者视图工具条按钮单击事件的接口
///被单击的按钮参数
///所属业务对象
///所属表单对象
///true表示实现了相应按钮的方法;false表示没有实现相应按钮的方法。
///
boolClickToolBarButton(ToolBarActionEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///设置为当前行之前的接口
///被选择的行参数
///所属业务对象
///所属表单对象
///是否允许选择新行,false--不允许选择新行,当前行不发生改变
///
boolRowSelecting(RowSelectEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///设置为当前行之后的接口
///被选择的行参数
///所属业务对象
///所属表单对象
///
voidRowSelected(RowSelectEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///业务数据合法性检查之前的接口
///所属业务对象
///所属表单对象
///检查是否通过,false--不通过
///
boolDataChecking(BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///业务数据合法性检查之后的接口
///所属业务对象
///所属表单对象
///
voidDataChecked(BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///参照打开前的接口
///观察者视图接口(IEditWindow)对象
///ReferOpenEventArgs参照信息
///所属业务对象
///所属表单对象
///是否允许参照,false--不允许参照,将不弹出参照界面,参照操作终止
///
boolReferOpening(ReferOpenEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///参照返回(关闭)后的接口
///ReferCloseEventArgs参照信息
///所属业务对象
///所属表单对象
///
voidReferClosed(ReferCloseEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///表单状态更新之前的接口
///状态的变动参数
///所属表单对象
///是否允许改变状态false-不允许改变状态,表单仍将处于当前状态
///
boolStateChanging(VoucherStateChangeEventArgspara,VoucherProxyvoucherObject);
///
///表单状态更新之后的接口
///状态的变动参数
///所属表单对象
///
voidStateChanged(VoucherStateChangeEventArgspara,VoucherProxyvoucherObject);
///
///行选择框的值发生变化之前的接口
///
///行选择框信息
///是否可改变,true:
值可变化,false:
值不可变化
boolRowChecking(RowCheckEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///行选择框的值发生变化之后的接口
///
///行选择框信息
voidRowChecked(RowCheckEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
//boolUnRowChecking(RowCheckEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
//voidUnRowChecked(RowCheckEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///单据数据加载前接口
///
///当前要加载的数据
///模型对象
///
boolReceiptDataLoading(ReceiptDataLoadingArgspara,VoucherProxyvoucherObject);
///
///单据数据加载后接口
///
///模型对象
///
voidReceiptDataLoaded(VoucherProxyvoucherObject);
///
///单据关闭前接口
///
///单据模型对象
///
boolReceiptUnLoading(VoucherProxyvoucherObject);
///
///单据关闭后接口
///
///单据模型对象
///
voidReceiptUnLoaded(VoucherProxyvoucherObject);
///
///单元格被选择后接口
///
///单元格对象
///当前实体
///模型对象
voidCellSelected(CellSelectEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///单元格双击接口
///
///单元格参数对象
///当前实体
///模型对象
voidCellDoubleClick(CellDoubleClickEventArgspara,BusinessProxybusinessObject,VoucherProxyvoucherObject);
///
///门户按钮点击触发
///
///
///
///
IButtonEventHandlerGetButtonEventHandler(VoucherButtonArgsButtonArgs,VoucherProxyvoucherObject);
///
///运行时表单加载之前调用的接口,可以处理表单加载之前的业务要求。
///
///
///
boolReceiptLoading(ReceiptLoadingArgsloadingArgs);
///
///运行时表单加载之后调用的接口,可以处理表单加载之后的业务要求。
///
///
voidReceiptLoaded(VoucherProxyvoucherObject);
///
///创建用户自定义控件接口,开发人员可以在这里创建用户自定义控件。
运行时会把这个控件加载到布局视图中。
(871版本新增)
///
///所属业务对象
///所属表单对象
///布局视图中指定的自定义控件“控件ID”
///用户自定义控件对象
objectCreateControl(BusinessProxybusinessObject,V