版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用友软件股份有限公司地址:北京市海淀区北清路68号用友软件园 电话户化开发UAP业务提升手册 起草单位 :ERP咨客户化开发部修正单位 :批 准 : 批准日期 : 目 录1摘要72样例开发前提83建立UAP项目84表单、档案开发114.1建立表单模型11新建实体12新建实体属性144.2建立表单布局234.3行为对象开发23表单开发26列表开发63生单二次开发72联查报表78联查UAP列表82UAP列表联查U8单据82用户自定义控件开发88U8单据引用UAP档案91行为对象注册1115报表开发1155.1摘要1155.2基本操作116新增报表116新增数据源131报
2、表查询138分组1385.3报表设计开发实例141存储过程模式开发实例(整体条件串)141复杂报表开发实例148图形化报表开发实例174UAP报表脚本抽取1936建立数据引擎1956.1功能介绍1956.2使用说明197登陆UAP环境197配制实体198业务对象2076.3应用技巧2197设置过滤条件2197.1功能介绍2197.2使用说明2207.3应用技巧2268设置栏目2268.1功能介绍2268.2使用说明2268.3应用技巧2299UAP参照2299.1功能介绍2299.2使用说明22910权限23910.1功能权限23910.2记录级权限24010.3字段级权限24111部署243
3、11.1UAP表单导出与导入24311.2UAP项目导出与导入24511.3行为对象部署24611.4报表部署24612附录:功能介绍24712.1行为对象升级说明247ReceiptPluginBase新增接口(与872版本的IReceipt接口相比)247ReceiptPluginBase新增接口(与871版本的IReceipt接口相比)25012.2LoginInfo 对象介绍2541 摘要本文以U8-ERP中的销售订单为应用原型,介绍了如何通过UAP平台进行软件开发,文中给出了开发方法和丰富的样例。内容包括:l UAP表单开发原理l UAP项目的建立和导入、导出l UAP表单的模型设计
4、和布局设计l UAP表单的行为对象开发l UAP表单列表设计与开发l UAP表单列表的行为对象开发l 如何对UAP表单的缺省按钮进行扩展性开发l 如何对UAP表单的缺省按钮进行取代性开发l 如何为UAP表单增加新的按钮及行为l 如何用程序代码调用UAP报表l 如何用程序代码调用UAP表单列表l 如何在UAP表单中增加权限控制:功能权限、字段权限、记录权限l 如何为UAP表单开发自定义控件l 如何开发树形档案l 如何维护UAP数据引擎l 如何维护栏目l 如何维护过滤条件l 如何调用U8APIl U8单据自定义项如何引用UAP档案本文档中使用的示例文件为“销售订单二次开发”,可以通过UAP将该文件
5、导入到帐套中。项目名称为“ SaleVoucher ”,导入后在项目中包括几个自定义单据:“销售订单”为二次开发的Demo示例;“零售日报”为自定义空间二次开发的Demo示例;“列表档案示例”、“树形编辑档案示例”、“树形导航档案示例”分别为各个对应的档案类型的示例。项目源代码:2 样例开发前提首先,需要安装U8(890)产品,并建立一个帐套。其次,您需要向用友公司购买UAP表单设计许可;不过您可以使用UAP的演示版本,但是演示版本不能新建UAP项目,也不能注册行为对象。3 建立UAP项目使用UAP登录帐套后,在系统界面上的新建项目选项卡,选中“供应链”后,在右边的列表中选择“销售管理”,在界
6、面下方的几个文本框中输入项目名称,编号,描述等;顺序选择框使用“默认”即可。点击“确定”如果输入信息与先前创建的项目信息不冲突,项目就可被成功创建。您也可以导入我们为您提供的UAP样例项目,导入方法如下。1、登录UAP;2、打开菜单“文件导入和导出”;3、选中“导入项目数据到目前的服务器”,点“确定”按钮;4、点“导入”按钮,选取培训目录下的 “Samplefile”;5、导入成功后;6、在UAP已存在的项目中产生了一个名称为“SaleVoucher”的项目;4 表单、档案开发4.1 建立表单模型选中“自定义表单”节点,单击右键,使用“新建自定义表单”功能创建一个新的表单。然后在弹出的选择界面
7、中选择“表单类型”下的“单据”,在名称文本框中输入一个表单名字,不要与以前创建的表单名字重复。在成功创建后,系统界面如下图所示:图表 1在上图所示的实体节点,默认有两个子节点,分别为:主表、第一子表,根据当前表单的需要设计实体,包括增加实体和实体属性等。4.1.1 新建实体需要为实体填写“实体名称”,和选择“实体类型”。除此以外,还可以通过实体的属性编辑窗口为实体设置各项信息。实体的相关属性:名称:实体显示的名称,仅用于设计时。发布状态:实体是否已发布,只读。功能:为实体定义自定义功能,在运行时显示为表格对应的工具栏按钮。状态设置:设置实体属性、功能在表单运行时的状态,决定实体属性、功能在不同
8、的环境下是否可用。物理表模式:设置实体物理表的创建模式,默认为由UAP在发布时自动创建。在特殊的应用场景中可以使用“使用已存在的对象”或“无”。后两种情况下UAP不负责实体物理表的维护。物理表:设置该实体在数据库存储时使用的物理表,一般情况下一个实体对应一个物理表。数据引擎模式:设置实体运行时数据的访问方式。默认为UAP系统在发布时自动创建,特殊的应用场景中可以使用“使用已存在的对象”或“无”,这两种情况下系统不负责实体数据的读取,只能通过用户定义的接口获取数据集。数据引擎:当数据引擎模式为“使用已存在的对象”时,设置要使用的数据引擎对象。主键:设置实体物理表的主键字段名。主键类型:设置实体物
9、理表主键字段的类型,可选“整数”或“GUID”或“字符串”。行模式:多行或单行。一般主表设置为单行。4.1.2 新建实体属性 实体必须包含实体属性时才有效。可以在UAP界面“表单”窗口中,右键点击实体对应的节点,选择“新建实体属性”菜单向实体添加实体属性:实体属性通用属性:l 类型:该实体属性的类型。l 描述:对该实体属性的单体描述。l 属性名称:实体属性的名称。l 默认值:实体属性的默认值。l 使用默认值:用户未提供数据时,是否使用实体属性的默认值。l 发布:该实体属性是否已经发布。l 常用条件:该实体属性是否可以在过滤中作为常用条件使用。l 区间条件:该实体属性是否可以在过滤中作为区间条件
10、使用。l 值更新事件:设置该实体属性值更新时需要处理的脚本列表。基础资料类型字段共有三种类型的值更新事件:“携带当前字段相关参照属性到指定列”、“计算定义公式的值到指定列”、“表达式为真/假时改变指定栏目编辑状态”;其余类型字段比基础资料类型字段缺少第一种类型的值更新事件。1. 携带当前字段相关参照属性到指定列2. 计算定义公式的值到指定列3. 表达式为真/假时改变指定栏目编辑状态表达式为真假时修改指定栏目的编辑状态表达式为真假时修改指定栏目的显示状态表达式为真假时修改指定功能状态表单功能实体功能l 唯一约束:是否检查该实体属性的值在整个表单范围内唯一。l 文本对齐:实体属性文本的显示位置。l
11、 显示文本:实体属性的不同语言环境中显示的文本。l 允许空值:实体属性的值是否可以为空。l 物理表:实体属性对应物理字段的表名,即该实体属性所属实体的物理表。l 字段:实体属性对应的物理字段名。除了支持以上通用属性外,不同类型的实体属性还具有不同的特性:1. 表单编号表单编号只能出现的主表实体中,并且只能有一个表单编号类型的实体属性。2. 表单名称表单名称类型的实体属性只能在档案类型的表单中使用,同表单编号一样,表单名称类型的实体属性只能出现主表实体中,并且只能出现一次。3. 整数和正整数l 可否为0:数值型的值是否可为0。l 录入长度:限制用户可录入数值的最多位数。l 数据格式:数值类型的显
12、示格式。l 最大值和最小值:数据的有效范围。正整数的最小值必须等于或大于0。4. 小数和正小数l 可否为0:数值型的值是否可为0。l 录入长度:限制用户可录入数值的最多位数。l 数据格式:数值类型的显示格式。l 最大值和最小值:数据的有效范围。正小数的最小值必须等于或大于0。l 小数位数:数据保留的小数位数。5. 文本l 多行输入:运行时是否支持录入多行文本。l 最大长度:最多可录入的文本长度。6. 日期和日期时间日期类型运行短日期格式,即只包含年月日。日期时间类型包含年月日和时分秒。7. 枚举枚举类型的实体属性需要设置枚举值列表,枚举值的显示值为在界面显示的文本,保存值为实际保存到数据库的数
13、据,如枚举类型的实体属性“销售类型”的枚举值可设置为如下图所示:U890中枚举字段支持选择“枚举模式”:使用已存在枚举、新创建枚举。选择“使用已存在枚举”后,需要为“枚举类型”选择一个U8系统中现有的枚举中的一个。8. 基础资料基础资料类型的值来自指定参照档案的对照值。l 参照对象:设置基础资料类型实体属性的参照档案对象,可以从U8档案列表中选择,包含UAP中定义为档案类型的表单。l 参照显示值:该属性是设置当前就“基础资料”字段在运行时的文本框里显示参照的那个字段的值。如“参照对象”属性选择的存货档案,如果不设参照显示值,则运行时默认显示为存货编码,如果将“参照显示值”属性设置为存货档案的“
14、存货”名称,运行时该字段就会显示为存货的名称。l 选择方式:设置在运行时的对照选择方式。l 自动校验:是否对录入的值进行检验以确定数据是否来自指定的参照对象。选择“否”时允许用户录入参照对象中不存在的值。9. 基础资料属性基础资料属性类型的实体属性必须和基础资料类型的实体属性结合使用。l 参照属性:设置基础资料属性类型的实体属性要绑定的基础资料类型实体属性,并指定关联的参照字段。当基础资料类型的实体属性值变化时,基础资料属性类型的实体属性值随之改变。10. 数量、价格和金额数量、价格和金额类型的实体属性实质上为小数类型,设置等同于小数类型的实体属性。11. 复选框特殊类型的整数值,运行时显示为
15、复选框,保存的数据为0(未选择)或1(选择)。12. 制单人当前单据的作者,一般设为登录用户。13. 制单日期和修改日期制单日期保存当前表单生成的日期;修改日期保存表单最后一次修改的日期。这两种类型的实体属性实质上为日期时间类型,设置等同于日期时间类型的实体属性。4.2 建立表单布局在完成实体的设计后,可以设计表单布局,UAP支持一个表单多个布局视图,用户可根据自己的使用习惯选择一种布局视图。布局视图的设计与普通window界面的布局设计基本一致。4.3 行为对象开发行为对象开发是指增加表单或列表的功能按钮,除了UAP系统自带的功能按钮外,还可以增加按钮,这些增加的功能按钮是UAP表单开发的基
16、础。UAP提供了多种增加功能的途径,首先通过设计界面的树形菜单中的“功能”节点下的表单功能和列表功能的“功能管理”(图表2)添加功能按钮,这些功能按钮最终在运行时会被加载到U8产品的门户上;其次可以为每个表单实体添加功能按钮(图表3),为实体添加完成这些功能按钮后,还需要在布局视图上为该表单实体的“功能”属性设置使用这些功能(图表4),这些功能按钮最终在运行时会被加载到该实体的工具栏按钮上。图表 2 图表 3 图表 4 图表 5增加功能按钮时,很多工作都可以通过上图(图5)的设计界面完成,开发人员关心的仅仅是表单开发业务逻辑的实现。这些按钮的作用主要是通过在运行时对模型对象中数据的修改以及最终
17、将修改的数据持久化来完成的。UAP表单开发分为表单开发和列表开发两种。因此对应了两种不同的开发类型定义了两种不同的访问模型对象数据的接口。4.3.1 表单开发表单开发访问模型对象的接口UFIDA.U8.UAP.UI.Runtime.Model.ReceiptPluginBase,该接口被定义在中,所以在做表单开发前,你需要为新建的表单开发项目添加的引用。表单开发又可细分为表单功能开发和表单实体功能开发,每个不同部分的开发又都分为UAP已有按钮的功能修改开发和新增按钮的功能开发。目前为止,只要是表单开发,只需要实现上述类即可。在继承ReceiptPluginBase后,在子类中会重写(overr
18、ide)以下这些方法:public virtual IButtonEventHandler GetButtonEventHandler(UFIDA.U8.UAP.UI.Runtime.Common.VoucherButtonArgs ButtonArgs, VoucherProxy voucherObject) return null; / / 运行时表单加载之前调用的接口,可以处理表单加载之前的业务要求。 / / U8登录对象 / .Net登录对象 / 表单编号 / 表单数据 / 表单状态 / 表单数据 public virtual void ReceiptLoading(U8Login.c
19、lsLogin login, string Cardnumber, System.Data.DataSet ds, UFIDA.U8.UAP.UI.Runtime.Common.VoucherStateEnum state, UFIDA.U8.UAP.UI.Runtime.Common.ReceiptLoadingParas loadingParas) / / 运行时表单加载之后调用的接口,可以处理表单加载之后的业务要求。 / / 所属表单对象 public virtual void ReceiptLoaded(VoucherProxy ReceiptObject) / / 值更新之前的接口,
20、对值的合法性检查在这里进行 / Cell的值变动参数 / 所属业务对象 / 所属表单对象 / 是否允许更新单元格的值,false-不允许更新,将保持原值 / public virtual bool CellChanging(UFIDA.U8.UAP.UI.Runtime.Common.CellChangeEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) return false; / / 值更新之后的接口,对值的后续处理(如对其他Cell值的变更)在这里进行 / Cell的值变动参数 / 所属业务
21、对象 / 所属表单对象 / public virtual void CellChanged(UFIDA.U8.UAP.UI.Runtime.Common.CellChangeEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) / / 增加行之前的接口,对行的合法性检查在这里进行 / 新增的行参数 / 所属业务对象 / 所属表单对象 / 是否允许增加新行,false-不允许增加新的行 / public virtual bool RowAdding(UFIDA.U8.UAP.UI.Runtime.Com
22、mon.RowChangeEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) return false; / / 增加行之后的接口,对新增行的后续处理在这里进行 / 新增的行参数 / 所属业务对象 / 所属表单对象 / public virtual void RowAdded(UFIDA.U8.UAP.UI.Runtime.Common.RowChangeEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject)
23、 / / 删除行之前的接口,对行的合法性检查在这里进行 / RowChangeEventArgs类型,要删除的行参数 / 所属业务对象 / 所属表单对象 / 是否允许删除这些行,false-不允许删除这些行 / public virtual bool RowsDeleting(UFIDA.U8.UAP.UI.Runtime.Common.RowChangeEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) return false; / / 删除行之后的接口,对删除行的后续处理在这里进行 / Row
24、ChangeEventArgs类型,要删除的行参数 / 所属业务对象 / 所属表单对象 / public virtual void RowsDeleted(UFIDA.U8.UAP.UI.Runtime.Common.RowChangeEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) / / 观察者视图工具条按钮单击事件的接口 / 被单击的按钮参数 / 所属业务对象 / 所属表单对象 / true表示实现了相应按钮的方法;false表示没有实现相应按钮的方法。 / public virtual b
25、ool ClickToolBarButton(UFIDA.U8.UAP.UI.Runtime.Common.ToolBarActionEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) return false; / / 设置为当前行之前的接口 / 被选择的行参数 / 所属业务对象 / 所属表单对象 / 是否允许选择新行,false-不允许选择新行,当前行不发生改变 / public virtual bool RowSelecting(UFIDA.U8.UAP.UI.Runtime.Common.R
26、owSelectEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) return false; / / 设置为当前行之后的接口 / 被选择的行参数 / 所属业务对象 / 所属表单对象 / public virtual void RowSelected(UFIDA.U8.UAP.UI.Runtime.Common.RowSelectEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) / / 业务数据合法性检
27、查之前的接口 / 所属业务对象 / 所属表单对象 / 检查是否通过,false-不通过 / public virtual bool DataChecking(BusinessProxy businessObject, VoucherProxy voucherObject) return false; / / 业务数据合法性检查之后的接口 / 所属业务对象 / 所属表单对象 / public virtual void DataChecked(BusinessProxy businessObject, VoucherProxy voucherObject) / / 观察者视图填充数据前的接口 /
28、观察者视图接口(IEditWindow)对象 / 即将要填充的数据 / public virtual void EditWindowFilling(UFIDA.U8.UAP.UI.Runtime.Common.IEditWindow view, System.Data.DataTable fillDataTable, BusinessProxy businessObject, VoucherProxy voucherObject) / / 观察者视图填充数据后的接口 / 观察者视图接口(IEditWindow)对象 / 已经填充的数据 / public virtual void EditWin
29、dowFilled(UFIDA.U8.UAP.UI.Runtime.Common.IEditWindow view, System.Data.DataTable fillDataTable, BusinessProxy businessObject, VoucherProxy voucherObject) / / 参照打开前的接口 / 观察者视图接口(IEditWindow)对象 / ReferOpenEventArgs参照信息 / 所属业务对象 / 所属表单对象 / 是否允许参照,false-不允许参照,将不弹出参照界面,参照操作终止 / public virtual bool ReferO
30、pening(UFIDA.U8.UAP.UI.Runtime.Common.ReferOpenEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) return false; / / 参照返回(关闭)后的接口 / 观察者视图接口(IEditWindow)对象 / ReferCloseEventArgs参照信息 / 所属业务对象 / 所属表单对象 / public virtual void ReferClosed(UFIDA.U8.UAP.UI.Runtime.Common.ReferCloseEven
31、tArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) / / 创建用户自定义控件接口,开发人员可以在这里创建用户自定义控件。运行时会把这个控件加载到布局视图中。(版本新增) / / 所属业务对象 / 所属表单对象 / 布局视图中指定的自定义控件“控件ID” / 用户自定义控件对象 public virtual System.Windows.Forms.Control CreateControl(BusinessProxy businessObject, VoucherProxy voucherObject,
32、string ID) return null; / / 表单状态更新之前的接口 / 状态的变动参数 / 所属表单对象 / 是否允许改变状态false-不允许改变状态,表单仍将处于当前状态 / public virtual bool StateChanging(UFIDA.U8.UAP.UI.Runtime.Common.VoucherStateChangeEventArgs para, VoucherProxy voucherObject) return false; / / 表单状态更新之后的接口 / 状态的变动参数 / 所属表单对象 / public virtual void StateC
33、hanged(UFIDA.U8.UAP.UI.Runtime.Common.VoucherStateChangeEventArgs para, VoucherProxy voucherObject) / / 鼠标左键双击数据行的接口 / / 鼠标双击信息 / / public virtual void RowDoubleClick(UFIDA.U8.UAP.UI.Runtime.Common.RowDoubleClickEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) / / 鼠标左键双击数据单元
34、格的接口 / / 鼠标双击信息 / 所属业务对象 / 所属表单对象 public virtual void CellDoubleClick(UFIDA.U8.UAP.UI.Runtime.Common.CellDoubleClickEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) / / 鼠标左键双击表格的标题的接口 / / 鼠标双击信息 / 所属业务对象 / 所属表单对象 public virtual void HeaderDoubleClick(UFIDA.U8.UAP.UI.Runtime.
35、Common.HeaderDoubleClickEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) / / 设置当前列之后的接口 / / 单元格信息 / 所属业务对象 / 所属表单对象 public virtual void CellSelected(UFIDA.U8.UAP.UI.Runtime.Common.CellSelectEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) /890 / / 在进
36、入单元格编辑状态之前判断单元格是否可编辑 / / 单元格信息 / 所属业务对象 / 所属表单对象 / 是否可编辑,true:可编辑,false:不可编辑 public virtual bool CellEditing(CellSelectEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) return true; / / 行选择框的值发生变化之前的接口 / / 行选择框信息 / 是否可改变,true:值可变化,false:值不可变化 public virtual bool RowChecking(R
37、owCheckEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) return true; / / 行选择框的值发生变化之后的接口 / / 行选择框信息 public virtual void RowChecked(RowCheckEventArgs para, BusinessProxy businessObject, VoucherProxy voucherObject) / / 运行时表单关闭之前调用的接口,可以处理表单关闭之前的业务要求,如判断是否需要关闭等 / / 所属表单对象 / 退出按钮的参数,可以通过IsCanceled来决定是否关闭表单IsCanceled=true表示不关闭,=false表示关闭 public vi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医养生馆医师聘用协议
- 美容院仪器管理规范
- 加油站停车场租用合同
- 艺术品交易中介费
- 旅游业超龄导游服务承诺书
- 石油项目部勘探员聘用协议
- 山西省电力设施建设合同模板
- 住宅装修翻新装饰改造协议
- 跨境电商平台投标技巧
- 2022年大学海洋工程专业大学物理下册期中考试试卷A卷-附解析
- 4.2主动运输与胞吞胞吐教案高一上学期生物人教版必修1
- 《海滨小城》第二课时公开课一等奖创新教学设计
- 《温室气体自愿减排项目方法学造林碳汇(CCER-14-001-V01)》
- 2024年物业管理师(高级)考前必刷必练题库500题(含真题、必会题)
- LTPS-CVD工艺设备介绍(超详细)
- Module 9 Unit 2 I feel happy 单元整体教学设计
- 嵌入式系统中的可靠性和容错性
- JT-T-325-2018营运客运类型划分及等级评定
- 加油站库存管理制度
- 2024年共青团入团积极分子考试题库(附答案)
- 中国历史文化知识竞赛100题(满分必刷)
评论
0/150
提交评论