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

下载本文档

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

文档简介

UAP单据开发(参照部分)编制人:编制日期:2012年10月目录TOC\o"1-5"\h\z\o"CurrentDocument".功能概述 3\o"CurrentDocument".参照结构图 3\o"CurrentDocument".参照分类 4\o"CurrentDocument".参照设计 4\o"CurrentDocument"数据库注册参照模型类 .4\o"CurrentDocument"NC模型和参照关联 4\o"CurrentDocument"列表型参照Model设计 5\o"CurrentDocument"树型参照Model设计 7\o"CurrentDocument"左树右表型参照Model设计 9\o"CurrentDocument".参照使用 10\o"CurrentDocument"实体层使用参照 11\o"CurrentDocument"单据模板设置参照 11\o"CurrentDocument"代码动态挂接参照 12\o"CurrentDocument"自定义参照 12\o"CurrentDocument"简单自定义参照 13\o"CurrentDocument"复杂自定义参照 13\o"CurrentDocument"设置参照多选 13\o"CurrentDocument".重要类说明 13\o"CurrentDocument"UlRefPane中的设置: 13\o"CurrentDocument"refModle中的设置 14适用对象:会制作单据模板,想进一步了解参照的使用.功能概述参照控件一般在界面上表现形式是控件上有个9,用户点击后,弹出对话框,用户选择数据后,数据回写到控件上,显示信息是text值,后台存有value值。这个和下拉框有些类似,但下拉框适用于数据条数少的,例如:请假方式,可能只有事假,婚假,病假,这几种形式,而参照适用于大批量数据,例如用户选择,可能涉及到集团选人的情况。同时参照也支持多选的情况,但下拉框一般不做成多选。.参照结构图这个图示控件和参照绑定之间的关系,参照控件在界面上就是UlRefPane,它绑定的参照类需要继承...RefModel图1.参照分类系统默认有4种参照,他们分别是列表型、树型、左树右表型、大数据量树表型,同时可以自定义参照,除复杂自定义参照外,其他参照近需要定义RefModel即可,进行数据库注册,和控件的关联,平台会用对话框来展示这些数据,用户选择数据后,回写用户选择的数据,无需用户自己写对话框来展示数据。复杂的自定义参照,就需要用户来些对话框去展示自己的数据,以及界面布局.表型:列表展示,它继承AbstrarctRefModel.树型:tree树型结构显示,它继承AbstractRefTreeModel.树表型:左边是树,右边是表,适合数据量比较大的,它继承AbstractRefGridTreeModel.大数据量树表型:左边是树,右边是表,适合数据量比较大的,它继承AbstractRefGridTreeBigDataModel.自定义参照,他和默认继承的类继承方式是一样的,只是不用数据库注册,在单据模板那里直接可以使用这个自定义参照。.参照设计数据库注册参照模型类你可以先确定好类名,或者先写好Model类也可以,请修改code,metadatatypename,modulename,name,pk_refinfo,refclass,完整实例如下:INSERTINTOdbo.bd_refinfo(code,dr,isneedpara,isspecialref,metadatatypename,modulename,name,para1,para2,para3,pk_refinfo,refclass,refsystem,reftype,reserv1,reserv2,reserv3,resid,residpath,ts,wherepart)VALUES('dept100',0,NULL,NULL,'dept','demo','销售部门列1」表型参照测试',NULL,NULL,NULL,'Dept2000000000XYHJ','nc.ui.demo.ref.SaleDeptRefModel',NULL,0,NULL,NULL,NULL,'销售部门列1」表型参照测试','ref','2011-11-1115:01:24',NULL)NC模型和参照关联例如,给部门设计参照,设计完NC模型后,在参照页签中,选择【设置参照】,会弹出参照对话框,从对话框中选择上面数据库注册的参照模型类,这样你设计的参照模型类就挂接到实体上了,当别的实体引用部门后,就可以给部门挂接参照。步骤如下:

.在NC模型设计器中,在引用模型中找到 uap\meta\general_interface.bmf业务接口IBDObject拖到你的元数据界面上,建立业务接口和你的实体的业务接口属性映射,例如id和实体pk的关联,参照要求必须实现这个接口,才能使用参照.设置参照,在参照那里选择设置参照,找到你数据库注册的那个参照列表型参照Model设计下面就是列表型参照设计的一个实际例子,同时注意红色字体部分,就是如何显示上级的,因为上级是个pk,所以要根据pk获取它的名称来显示。列表型图示如下,点击部门,显示下面的部门列表,同时支持多选。完整代码如下。摘回里织I 3丘口单据号早裾卜潮_图3publicclassSaleDeptRefModelextendsAbstractRefModel{publicSaleDeptRefModel()(reset();)publicvoidreset()(setRefNodeName("部门");setFieldCode(newString[]{"code","name","mnecode","pk_fatherorg"});setFieldName(newString[]{“编码”,“名称",“助记码",“上级部门”});setHiddenFieldCode(newString[]{"pk_dept","displayorder","innercode"});setPkFieldCode("pk_dept");setRefCodeField("code");setRefNameField("name");setTableName(DeptVO.getDefaultTableName());setMnecode(newString[]{"mnecode","name"});setAddEnableStateWherePart(true);setResourceID("dept");setFilterRefNodeName(newString[]{"业务单元"});setOrderPart("displayorder,code");resetFieldName();〃获取上级部门Stringfomula_dept="name->getColValue(org_dept,name,pk_dept,pk_fatherorg)";setFormulas(newString[][]{newString[]{"pk_fatherorg",fomula_dept}});}publicvoidfilterValueChanged(ValueChangedEventchangedValue){StringselectedPKs[]=(String[])(String[])changedValue.getNewValue();if(selectedPKs!=null&&selectedPKs.length>0)setPk_org(selectedPKs[0]);protectedStringgetEnvWherePart(){return(newStringBuilder()).append("(pk_group='").append(getPk_group()).append("'and").append("pk_org").append("='").append(getPk_org()).append("')").toString();)树型参照Model设计下面就是树型参照设计的一个实际例子,树型图示如下,点击部门,显示下面的部门树型参照。完整代码如下。"T部nIX□的剧新国拦目id需1且掂日期। 盛犯职।部门HI'=s||4baleie技编定的nanBDd100^3^lOOIZZIDOflOOOQOOOOYV二g明号[poo1Q曲黄一馥1QQ1Z?]晒WWQQQUyi;DmiDaso^ZnPlooizziDDnaaaaooDUYjD虎口口技术部lOO1ZZ1D0flflOOOOOOUYG隋定LY,图4publicclassSaleDeptTreeRefModelextendsAbstractRefTreeModel{publicSaleDeptTreeRefModel(){reset();)publicvoidreset(){setRefNodeName("部门");setFieldCode(newString[]{"code","name","mnecode"});setFieldName(newString[]{"编码”,“名称","助记码"});setHiddenFieldCode(newString[]{"pk_dept","pk_fatherorg","displayorder","innercode"});setPkFieldCode("pk_dept");setRefCodeField("code");setRefNameField("name");setTableName(DeptVO.getDefaultTableName());setFatherField("pk_fatherorg");setChildField("pk_dept");setMnecode(newString[]{"mnecode","name"});setAddEnableStateWherePart(true);setResourceID("dept");setFilterRefNodeName(newString[]{"业务单元"});setOrderPart("displayorder,code");resetFieldName();setTreeIconPolicy(newOrgTreeCellRendererIconPolicy("Department"));}publicvoidfilterValueChanged(ValueChangedEventchangedValue){StringselectedPKs[]=(String[])(String[])changedValue.getNewValue();if(selectedPKs!=null&&selectedPKs.length>0)setPk_org(selectedPKs[0]);}protectedStringgetEnvWherePart(){return(newStringBuilder()).append("(pk_group='").append(getPk_group()).append("and").append("pk_org").append("='").append(getPk_org()).append("')").toString();}左树右表型参照Model设计下面就是左树右表型参照设计的一个实际例子,左树右表型图示如下,点击部门,显示下面的左树右表型参照。完整代码如下。左树右表型参照型设计原理是点击左边的节点树,进行数据过滤,显示在右边的表中,那就需要在点击节点的时候,把节点值传过去,右表根据节点值进行过滤。左边树通过setClassJoinField("pk_org");传过去值,右表通过setDocJoinField("pk_org");进行接收。都门-'K口起常至部 由制新直任目■的钢怖 名称2 - =ill.二-l-Ls1; Ju-tIL'-i.-.■□Th+,he大学北京句T;可央1[91DU 叫唐却■也一部30200 技术部4卅1口费 触二钿陲% 取消(5publicclassSaleDeptGridTreeRefModelextendsAbstractRefGridTreeModel{publicSaleDeptGridTreeRefModel(){reset();)@Overridepublicvoidreset(){setRefTitle("部门");setRootName("组织");setClassFieldCode(newString[]{"code","name","pk_children","pk_father",,,display_order,,,1,pk_org",/**组织主键,对于BU,就是pk_org,对于部门,就是所属BU的pk_org*/"pk_group"));setClassFatherField("pk_father");setClassChildField("pk_children");setClassJoinField("pk_org");StringBuilderclassTableName=newStringBuilder();classTableName.append("(selecto.code,,2,3,4,5,6,o.pk_group,a.pk_adminorgpk_children,"+"a.pk_fatherorgpk_father,o.pk_org,o.codedisplay_order").append("fromorg_adminorgainnerjoinorg_orgsoona.pk_adminorg=o.pk_org)org");setClassTableName(classTableName.toString());setClassDefaultFieldCount(getClassDefaultFieldCount());setClassDataPower(true);setClassWherePart("pk_group='"+getPk_group()+"'");setClassOrderPart("display_order");setFieldCode(newString[]{"code","name","mnecode"});setFieldName(newString[]{“编码”,“名称",“助记码"});setHiddenFieldCode(newString[]{"pk_dept","pk_fatherorg","displayorder","innercode"});setTableName(DeptVO.getDefaultTableName());setPkFieldCode("pk_dept");setDocJoinField("pk_org");setOrderPart(DeptVO.CODE);setRefCodeField(DeptVO.CODE);setRefNameField(DeptVO.NAME);resetFieldName();}.参照使用使用参照大概有四种方式,第一实体层直接使用,二单据模板中设置,三代码动态挂接,,以及自定义参照,下面分别说明。

实体层使用参照在设计实体的时候,可以默认设置参照,例如部门,这里的部门参照选择要求,在部门实体那里你设计的参照和实体进行了挂接,如果仅仅是数据库实体模型进行了注册,但没有和实体挂接,那这里是看不到的屋性见名■接口属性映射拳里二屋性见名■接口属性映射拳里二魂 ]:,.一 1震住「魂 ]:,.一 1震住「3不用匕1E示用性增加州除下靠上移亘顶宜底名称里示型混相李盟金容建照名称 描述有「doptvid部门REF部门依本信息cd&ptwidvarchar^中cdeptid部门最新相本REF部门cdeptidvsr^iar■部门版本 ・HA印CBmployae...业务员REF人员基本信皂csmploy&e..i।vsrehar|口川一口1>.千1rn“吗;|单据模板设置参照在设计实体的时候,可以客户自己设置参照,例如部门,这里的部门参照选择要求,仅仅是数据库实体模型进行了注册即可,不用和实体挂接也能看到。企15&_F414ord.sr精售订单主九上]不用+口门日落色主专田1Hf 甫售订田用黄£_江皿角由田晶氏麻匚摘生组织田用江或匚冒箱主组织版本ffid才ctr皿typeid订单妞喈VlfiiiLffpsctidi订单1类^*ebiitxpejdIt否说在 *丸型i捏示公谕海心式骏让公式能琉效M生金占f觥漏.能当酬显啜期翻晦代码动态挂接参照在卡片界面上参照对应的控件就是一个UlRefPane,可以通过代码动态的挂接参照,找到你的组件,然后把它转为UlRefPane,即可设置参照,完整代码如下:publicclassSaleOrderCardFormextendsHrBillFormEditor{@OverridepublicvoidinitUI(){super.initUI();setDefRef();)/***设置默认参照*/privatevoidsetDefRef(){BillCardPanelpanel=getBillCardPanel();if(panel!=null){〃部门多选BillItemcdeptid=panel.getHeadItem(SaleOrderHVO.CDEPTID);if(cdeptid!=null){UIRefPanep=(UIRefPane)cdeptid.getComponent();if(p!=null){//p.setRefNodeName("销售部门列表型参照测试");//p.setRefNodeName("销售部门树型参照测试");p.setRefNodeName("销售部门左树型右列表参照测试");p.setMultiSelectedEnabled(true);)自定义参照自定义参照分类两类,一是简单自定义参照要求只要制作一个数据模型参照类即可,不用NC模型挂接,也不用数据库注册,在单据模板初始化时,例如给部门挂接参照,你找到部门,打开参照选择,你对【是否自定义参照】打钩后,在自定义参照类名称那里输入输入类名全路径即可,同时用“<>”包着,例如:<nc.ui.demo.ref.SaleDeptRefModel>,平台会读取数据然后,对话框打开;二是如图1中的自己写个对话框继承IRefUINew2,自己去实现展示。简单自定义参照JTfiiordsr鸨售订单主二JTfiiordsr鸨售订单主二/csalfioriirid.隹j售主关田EO_ffiLiMficr_b揩国r同前如£啊鹿国销售给跟用加FHbJ,茹当组织版本S5fTrmt.yrrd订单类超营Eh皿0FME订单生』由就clirtzpeid北劳王催图8复杂自定义参照如图1中的自己写个对话框继承IRefUINew2,自己去实现展示。设置参照多选参阅【代码动态挂接】章节的代码,即是设置多选。注意:设置参照放上面,设置多选放下面,否则不起作用p.setRefNodeName("销售部门左树型右列表参照测试");p.setMultiSelectedEnabled(true);.重要类说明UIRefPane中的设置:setToolTipText(String);〃设置参照控件的toolTipsetMaxLength(int);〃设置输入字符的最大长度,默认20;setEditable(boolean);〃设置参照是否可编辑setEnabled(boolean);〃设置参照是否可以使用setDelStr(String);〃设置参照输入框不能输入的字符串。setColor(Color);〃设置参照输入框的背景色。setCacheEnabled(boolean);//是否使用缓存setMultiSelectedEnabled(boolean)J/是否允许多选择setAutoCheck(boolean);//是否自动解析输入的参照数据setButtonFireEvent(boolean);//按钮选择数据后是否触发ValueChanged事件setNotLeafSelectedEnabled(Boolean);/俳末级节点是否可选择(对树参照有效)setIncludeSubShow(boolean);//树型参照是否包含下级复选框是否显示setMultiCorpRef(boolean);〃是否多组织参照setTreeGridNodeMultiSelected(boolean);//树表参照是否允许选择不同树节点下的数据。setRe仃ype(intre仃ype)设置参照显示类型,通过这个方法设置参照为下拉列表的显示样式。refType的定义在IRefConst中。setMultiOrgSelected(booleanisMulti

温馨提示

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

评论

0/150

提交评论