用友UAP单据开发(参照部分_第1页
用友UAP单据开发(参照部分_第2页
用友UAP单据开发(参照部分_第3页
用友UAP单据开发(参照部分_第4页
用友UAP单据开发(参照部分_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、UAP单 据 开 发(参照部分)编 制 人:编制日期:2012年10月目录1.功能概述32.参照结构图33.参照分类46.参照设计46.1.数据库注册参照模型类46.2.NC模型和参照关联46.3.列表型参照Model设计56.4.树型参照Model设计76.5.左树右表型参照Model设计97.参照使用107.1.实体层使用参照117.2.单据模板设置参照117.3.代码动态挂接参照127.4.自定义参照127.4.1.简单自定义参照137.4.2.复杂自定义参照137.5.设置参照多选138.重要类说明138.1.UIRefPane中的设置:138.2.refModle中的设置14适用对象

2、:会制作单据模板,想进一步了解参照的使用1. 功能概述参照控件一般在界面上表现形式是控件上有个,用户点击后,弹出对话框,用户选择数据后,数据回写到控件上,显示信息是text值,后台存有value值。这个和下拉框有些类似,但下拉框适用于数据条数少的,例如:请假方式,可能只有事假,婚假,病假,这几种形式,而参照适用于大批量数据,例如用户选择,可能涉及到集团选人的情况。同时参照也支持多选的情况,但下拉框一般不做成多选。2. 参照结构图这个图示控件和参照绑定之间的关系,参照控件在界面上就是UIRefPane,它绑定的参照类需要继承RefModel系统默认实现UFRefGridTreeUIAbstrac

3、tRefDialogIRefUINew2UFRefManageUIRefPane例如 银行类型BanktypeDefaultRefModel lAbstractRefModel(表)例如部门档案DeptDefaultRefModelAbstractRefTreeModel(树)例如 会计期间.AccPeriodDefaultRefModelAbstractRefGridTreeModel(树表)例如 客商档案CustomerDefaultRefModelAbstractRefGridTreeBigDataModel(大数据树表参照)(树表)图13. 参照分类系统默认有4种参照,他们分别是列表型

4、、树型、左树右表型、大数据量树表型,同时可以自定义参照,除复杂自定义参照外,其他参照近需要定义RefModel即可,进行数据库注册,和控件的关联,平台会用对话框来展示这些数据,用户选择数据后,回写用户选择的数据,无需用户自己写对话框来展示数据。复杂的自定义参照,就需要用户来些对话框去展示自己的数据,以及界面布局1. 表型:列表展示,它继承 AbstrarctRefModel2. 树型:tree树型结构显示,它继承AbstractRefTreeModel3. 树表型:左边是树,右边是表,适合数据量比较大的,它继承 AbstractRefGridTreeModel4. 大数据量树表型 :左边是树,

5、右边是表,适合数据量比较大的,它继承AbstractRefGridTreeBigDataModel5. 自定义参照,他和默认继承的类继承方式是一样的,只是不用数据库注册,在单据模板那里直接可以使用这个自定义参照。6. 参照设计6.1. 数据库注册参照模型类你可以先确定好类名,或者先写好Model类也可以,请修改 code,metadatatypename, modulename,name,pk_refinfo, refclass ,完整实例如下:INSERT INTO dbo.bd_refinfo (code, dr, isneedpara, isspecialref, metadatatyp

6、ename, modulename, name, para1, para2, para3, pk_refinfo, refclass, refsystem, reftype, reserv1, reserv2, reserv3, resid, residpath, ts, wherepart)VALUES (dept100, 0, NULL, NULL, dept, demo, 销售部门列表型参照测试,NULL,NULL,NULL,DeptXYHJ,nc.ui.demo.ref.SaleDeptRefModel, NULL, 0, NULL, NULL, NULL, 销售部门列表型参照测试,

7、ref, 2011-11-11 15:01:24, NULL)6.2. NC模型和参照关联例如,给部门设计参照,设计完NC模型后,在参照页签中,选择【设置参照】,会弹出参照对话框,从对话框中选择上面数据库注册的参照模型类,这样你设计的参照模型类就挂接到实体上了,当别的实体引用部门后,就可以给部门挂接参照。步骤如下:图21. 在NC模型设计器中,在引用模型中找到uapmetageneral_interface.bmf业务接口IBDObject拖到你的元数据界面上,建立业务接口和你的实体的业务接口属性映射,例如id和实体pk的关联,参照要求必须实现这个接口,才能使用参照2. 设置参照,在参照那里选

8、择设置参照,找到你数据库注册的那个参照6.3. 列表型参照Model设计下面就是列表型参照设计的一个实际例子,同时注意红色字体部分,就是如何显示上级的,因为上级是个pk,所以要根据pk获取它的名称来显示。列表型图示如下,点击部门,显示下面的部门列表,同时支持多选。完整代码如下。图3public class SaleDeptRefModel extends AbstractRefModel public SaleDeptRefModel() reset(); public void reset() setRefNodeName(部门); setFieldCode(new String code,

9、 name, mnecode,pk_fatherorg ); setFieldName(new String 编码, 名称, 助记码, 上级部门 ); setHiddenFieldCode(new String pk_dept, displayorder, innercode ); setPkFieldCode(pk_dept); setRefCodeField(code); setRefNameField(name); setTableName(DeptVO.getDefaultTableName(); setMnecode(new String mnecode, name ); setAd

10、dEnableStateWherePart(true); setResourceID(dept); setFilterRefNodeName(new String 业务单元 ); setOrderPart(displayorder, code); resetFieldName(); /获取上级部门String fomula_dept = name-getColValue(org_dept, name, pk_dept ,pk_fatherorg);setFormulas(new String new String pk_fatherorg, fomula_dept ); public void

11、 filterValueChanged(ValueChangedEvent changedValue) String selectedPKs = (String)(String)changedValue.getNewValue(); if(selectedPKs != null & selectedPKs.length 0) setPk_org(selectedPKs0); protected String getEnvWherePart() return (new StringBuilder().append(pk_group = ).append(getPk_group().append(

12、 and ).append(pk_org).append( = ).append(getPk_org().append().toString(); 6.4. 树型参照Model设计下面就是树型参照设计的一个实际例子,树型图示如下,点击部门,显示下面的部门树型参照。完整代码如下。图4public class SaleDeptTreeRefModel extends AbstractRefTreeModel public SaleDeptTreeRefModel() reset(); public void reset() setRefNodeName(部门); setFieldCode(new

13、String code, name, mnecode ); setFieldName(new String 编码, 名称, 助记码 ); setHiddenFieldCode(new String pk_dept, pk_fatherorg, displayorder, innercode ); setPkFieldCode(pk_dept); setRefCodeField(code); setRefNameField(name); setTableName(DeptVO.getDefaultTableName(); setFatherField(pk_fatherorg); setChil

14、dField(pk_dept); setMnecode(new String mnecode, name ); setAddEnableStateWherePart(true); setResourceID(dept); setFilterRefNodeName(new String 业务单元 ); setOrderPart(displayorder, code); resetFieldName(); setTreeIconPolicy(new OrgTreeCellRendererIconPolicy(Department); public void filterValueChanged(V

15、alueChangedEvent changedValue) String selectedPKs = (String)(String)changedValue.getNewValue(); if(selectedPKs != null & selectedPKs.length 0) setPk_org(selectedPKs0); protected String getEnvWherePart() return (new StringBuilder().append(pk_group = ).append(getPk_group().append( and ).append(pk_org)

16、.append( = ).append(getPk_org().append().toString(); 6.5. 左树右表型参照Model设计下面就是左树右表型参照设计的一个实际例子,左树右表型图示如下,点击部门,显示下面的左树右表型参照。完整代码如下。左树右表型参照型设计原理是点击左边的节点树,进行数据过滤,显示在右边的表中,那就需要在点击节点的时候,把节点值传过去,右表根据节点值进行过滤。左边树通过setClassJoinField(pk_org);传过去值,右表通过setDocJoinField(pk_org);进行接收。图5public class SaleDeptGridTreeR

17、efModel extends AbstractRefGridTreeModel public SaleDeptGridTreeRefModel() reset(); Overridepublic void reset() setRefTitle(部门);setRootName(组织);setClassFieldCode(new String code, name, pk_children, pk_father, display_order,pk_org,/*组织主键,对于BU,就是pk_org,对于部门,就是所属BU的pk_org*/pk_group );setClassFatherFiel

18、d(pk_father);setClassChildField(pk_children);setClassJoinField(pk_org);StringBuilder classTableName = new StringBuilder();classTableName.append( (select o.code, , 2, 3, 4, 5, 6, o.pk_group ,a.pk_adminorg pk_children,+ a.pk_fatherorg pk_father, o.pk_org, o.code dis

19、play_order ).append( from org_adminorg a inner join org_orgs o on a.pk_adminorg = o.pk_org) org );setClassTableName(classTableName.toString();setClassDefaultFieldCount(getClassDefaultFieldCount();setClassDataPower(true);setClassWherePart( pk_group = + getPk_group() + );setClassOrderPart(display_orde

20、r);setFieldCode(new String code, name, mnecode);setFieldName(new String 编码, 名称, 助记码 );setHiddenFieldCode(new String pk_dept, pk_fatherorg, displayorder, innercode );setTableName(DeptVO.getDefaultTableName();setPkFieldCode(pk_dept);setDocJoinField(pk_org);setOrderPart(DeptVO.CODE);setRefCodeField(Dep

21、tVO.CODE);setRefNameField(DeptVO.NAME);resetFieldName();7. 参照使用使用参照大概有四种方式,第一实体层直接使用,二单据模板中设置,三代码动态挂接,以及自定义参照,下面分别说明。7.1. 实体层使用参照在设计实体的时候,可以默认设置参照,例如部门,这里的部门参照选择要求,在部门实体那里你设计的参照和实体进行了挂接,如果仅仅是数据库实体模型进行了注册,但没有和实体挂接,那这里是看不到的图67.2. 单据模板设置参照1 在设计实体的时候,可以客户自己设置参照,例如部门,这里的部门参照选择要求,仅仅是数据库实体模型进行了注册即可,不用和实体挂接

22、也能看到。 32图77.3. 代码动态挂接参照在卡片界面上参照对应的控件就是一个UIRefPane,可以通过代码动态的挂接参照,找到你的组件,然后把它转为UIRefPane,即可设置参照,完整代码如下:public class SaleOrderCardForm extends HrBillFormEditor Overridepublic void initUI() super.initUI();setDefRef();/* * 设置默认参照 */private void setDefRef()BillCardPanel panel=getBillCardPanel();if(panel!=

23、null)/部门多选 BillItem cdeptid = panel.getHeadItem(SaleOrderHVO.CDEPTID); if(cdeptid!=null)UIRefPane p=(UIRefPane)cdeptid.getComponent();if(p!=null)/p.setRefNodeName(销售部门列表型参照测试);/p.setRefNodeName(销售部门树型参照测试);p.setRefNodeName(销售部门左树型右列表参照测试);p.setMultiSelectedEnabled(true); 7.4. 自定义参照自定义参照分类两类,一是简单自定义参

24、照要求只要制作一个数据模型参照类即可,不用NC模型挂接,也不用数据库注册,在单据模板初始化时,例如给部门挂接参照,你找到部门,打开参照选择,你对【是否自定义参照】打钩后,在自定义参照类名称那里输入输入类名全路径即可,同时用“”包着,例如:,平台会读取数据然后,对话框打开;二是如图1中的 自己写个对话框继承IRefUINew2,自己去实现展示。1 7.4.1. 简单自定义参照 4 32图87.4.2. 复杂自定义参照如图1中的 自己写个对话框继承IRefUINew2,自己去实现展示。7.5. 设置参照多选参阅【代码动态挂接】章节的代码,即是设置多选。注意:设置参照放上面,设置多选放下面,否则不起

25、作用p.setRefNodeName(销售部门左树型右列表参照测试);p.setMultiSelectedEnabled(true);8. 重要类说明8.1. UIRefPane中的设置:setToolTipText(String);/设置参照控件的toolTipsetMaxLength(int);/设置输入字符的最大长度,默认20;setEditable(boolean);/设置参照是否可编辑setEnabled(boolean);/设置参照是否可以使用setDelStr(String);/设置参照输入框不能输入的字符串。setColor(Color);/设置参照输入框的背景色。setCac

26、heEnabled(boolean);/是否使用缓存setMultiSelectedEnabled(boolean);/是否允许多选择setAutoCheck(boolean);/是否自动解析输入的参照数据setButtonFireEvent(boolean);/按钮选择数据后是否触发ValueChanged事件setNotLeafSelectedEnabled(Boolean);/非末级节点是否可选择(对树参照有效)setIncludeSubShow(boolean);/树型参照是否包含下级复选框是否显示setMultiCorpRef(boolean);/是否多组织参照setTreeGrid

27、NodeMultiSelected(boolean);/树表参照是否允许选择不同树节点下的数据。setRefType(int refType);设置参照显示类型,通过这个方法设置参照为下拉列表的显示样式。refType的定义在IRefConst中。setMultiOrgSelected(boolean isMultiOrgSelected) 多组织参照是否可以多组织选择数据setMultiRefFilterPKs(String filterPKs) 设置多组织参照过滤组织参照的PK范围setIBeforeRefDlgShow(IBeforeRefDlgShow beforeRefDlgShow) /系统默认的表型、树形参照,在弹出对话框

温馨提示

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

最新文档

评论

0/150

提交评论