当前位置:文档之家› NCV5-参照开发技术红皮书

NCV5-参照开发技术红皮书

参照开发技术红皮书

NC-UAP 5.0

用友NC-UAP

2013-03-27

目录

第一章前言 (1)

第二章参照总体结构图 (2)

1.结构图 (2)

2.代码结构 (2)

2.1nc.ui.bd.ref (2)

2.2nc.ui.bd.ref.busi (3)

2.3nc.ui.pub.beans (3)

2.4nc.vo.bd.ref (3)

2.5nc.vo.bd.refdatatemp (3)

2.6nc.bs.bd.ref (4)

2.7nc.itf.uap.busibean (4)

第三章系统默认参照使用介绍 (5)

第四章自定义参照开发规范 (6)

1.参照界面的定义: (6)

2.参照Model的定义 (6)

2.1表型参照 (6)

2.2树型参照设置 (7)

2.3树表型参照 (8)

3.覆盖参照抽象Model中的方法的注意事项 (9)

第五章参照客户化功能的设定 (10)

1.UIRefPane中的设置: (10)

2.refModle中的设置 (10)

3.注意事项 (11)

第六章参照值返回与事件处理 (12)

第七章V5 最新变化说明 (13)

1.新增参照节点名称常量接口 (13)

2.会计期间默认参照的变化 (13)

3.控制参照某列数据的显示格式接口 (13)

第一章前言

统一提供各种基础档案的参照录入。

?提供定位,过滤,模糊查询,高级查询等功能。

?提供自定义参照定义功能。

系统提供表型、树型、树表型参照。

表型:以表格形式显示。

树型:只能是有级次关系的档案,以树型显示。

树表型:对于有分类的档案,一般也是大数据量的档案例,如存货档案。左树是分类树,右表是该分类下的数据。

第二章参照总体结构图

1. 结构图

2. 代码结构

2.1nc.ui.bd.ref

定义接口IRefModel、IrefTreeModel、IrefGridTreeModel、IrefUI、IrefUINew、IrefQueryDlg、IrefQueryDlg2

AbstractRefModel implements IRefModel

AbstractRefTreeModel――>AbstractRefModel implements IRefTreeModel

AbstractRefGridTreeModel――>AbstractRefTreeModel implements IRefGridTreeModel AccBankDefaulteRefModel――>AbstractRefModel

AreaclDefaultRefModel――>AbstractRefTreeModel

InvmandocDefaultRefModel――>AbstractRefGridTreeModel

UFRefColumnsDlg――>nc.ui.pub.beans.UIDialog

UFRefGridTreeUI――>nc.ui.pub.beans.UIDialog implements IRefUINew AbstractRefDialog—〉nc.ui.pub.beans.UIDialog implements IRefUINew UFRefGridUINew――> AbstractRefDialog

UFRefTreeUINew――> AbstractRefDialog

UFRefManage 参照控件控制参照对话框的中介类

nc.ui.bd.ref.IRefColDispConverter 参照列特殊显示格式装换接口类

IBusiType 参照业务信息定义

2.2nc.ui.bd.ref.busi

具体业务参照,也是Uap默认提供的参照

2.3nc.ui.pub.beans

RefPaneIconFactory参照ImageIcon工厂

UIRefPane 参照控件类

UIRefPaneTextField 参照控件的组成部分,文本框

2.4nc.vo.bd.ref

DocSealWherePartMng根据参照refNodeName取得参照的封存条件工具类IFilterStrategy参照过滤数据策略。参照提供设置一些主键,参照的查询结果按策略

过滤的功能

IRefAutoMatchMode参照模糊匹配模式

RefColumnDispConvertVO参照列数据特殊显示配置VO

RefcolumnVO参照栏目业务对象子对象

RefException参照异常类

RefIconConfigVO参照树显示图标配置VO

RefNodeNameConst UAP默认参照常量

RefQueryResultVO参照数据,参照栏目信息复合查询VO

RefQueryVO参照查询数据信息VO

ReftableVO 参照栏目业务对象主对象

RefVO_mlang 参照多语言自动翻译配置对象

2.5nc.vo.bd.refdatatemp

RefdatatempVO 参照临时表数据VO

2.6nc.bs.bd.ref

RefImpl 参照数据查询实现类

ReftableImpl 参照栏目数据查询实现类

2.7nc.itf.uap.busibean

IRef 参照数据查询服务接口

IRefForTempTable 参照从临时表查询接口,需要支持事务处理IReftable 参照栏目查询服务接口

第三章系统默认参照使用介绍

NC系统中存在大量的基本档案,与之对应,每种基本档案都配置了相应的参照。使用方法:

UIRefPane是一个控件

UIRefPane ref = new UIRefPane();

Ref.setRefNodeName(nc.vo.bd.ref.RefNodeNameConst.DEPTDOC);//部门档案

这样就定义好了一个部门档案参照。

系统提供的RefNodeName请参见nc.vo.bd.ref.RefNodeNameConst

第四章自定义参照开发规范

参照支持自定义参照的定义。

自定义参照可以定义参照的UI界面,也可以只定义参照的Model

1. 参照界面的定义:

参照分为表型、树型、树表型参照三种。继承了UIDialog并实现了IRefUINew接口。

程序员可自定义参照界面,最好也继承UIDialog,须实现IrefUINew接口。

2. 参照Model的定义

对应与3种类型的参照,Model也有3个抽象类:

表型:AbstrarctRefModel

树型AbstractRefTreeModel

树表型AbstractRefGridTreeModel

要自定义不同类型参照Model ,请继承相关的抽象类。并设置如下属性:

2.1表型参照

(黑体为必设项)

i..如果需要distinct短语,或其他断语:

setStrPatch("distinct");

如果需要公司主键(一定在setWherePart前执行,对于默认参照在设置pk_corp

后,还须重新设定setWherePart):

setPk_corp(公司主键) ;

setWherePort(……);

设置参照名(弹出窗口标题),可以和RefNodeName不同:

setRefTitle(参照名)

ii.设置select子句:1

//可显示字段

setFieldCode(new String[] { "bd_psndoc.psncode", "bd_psndoc.psnname","bd_deptdoc.deptname" });

//不可显示字段――如主键

setHiddenFieldCode(new String[]{"pk_corp"});

iii.中文名称――表头和栏目用

setFieldName(new String[](“人员代码”,”姓名”,”部门名称”));

iv.设置from子句:

setTableName("bd_psndoc left outer join bd_deptdoc on bd_psndoc.pk_deptdoc=bd_deptdoc.pk_deptdoc ");

v.设置where子句:

setWherePart(" bd_psndoc.pk_corp='" + getPk_corp() + "'");

注:需要根据不同的公司返回查询,参数中用getPk_corp()方法。

在原setWherPart的基础上追加where子句:

addWherePart();

注:每次都从原where中追加,不允许连续追加where子句。

vi.设置group子句:(默认为空)

setGroupPart("");

vii.设置order子句:(默认为第一列)

setOrderPart("");

viii.前几列在表中显示:(默认前2列)

setDefaultFieldCount(2);

ix.设定主键字段:主键字段必须在setHiddenFieldCode或setFieldCode已设定setPkFieldCode("bd_psndoc.pk_psndoc");

x.设定界面输入字段:(默认为第一列)

setBlurField(字段名);

xi.设定参照代码字段:(默认为第一列)

setRefCodeField(字段名);

xii.设定参照名称字段:(默认为第二列)

setRefNameField(字段名);

xiii.设置助记码字段名:

setMnecode(字段名数组)

xiv.设置组织类型和组织主键,对于主体账簿类型的档案适用如(会计科目)setPk_GlOrgBook(组织类型, 组织)

2.2树型参照设置

(同表型参照的设置,表型参照的必输部分一定要输入。树形设置group子句无效) 指定编码规则(如果为空,则按上下级关系构造树必须指定父字段,子字段):setCodingRule("222222");

指定父字段名:

setFatherField(字段名)

必输一项,否则没有分级规则。

指定子字段名:

setChildField(字段名)

指定根名(默认和参照名相同):

setRootName(根名);

2.3树表型参照

(黑体为必设项)

设置树数据

i.setClassFieldCode(字段名数组);

ii.setClassFieldName(表名)

iii.setClassWherePart(where子句)

iv.SetOrderPart(Order子句)

v.SetClassJoinField(要和表关联的字段名)

vi.SetClassDefaultFieldCount(数值)(树节点显示字段默认为2)

vii.指定定编码规则:如果为空,按上下级关系

setCodingRule("222222");

viii.指定父字段名

setFatherField(字段名)

ix.指定子字段名

setChildField(字段名)

10.指定根名

setRootName(根名);

设置表数据

(同表型参照的设置,表型参照的必输部分一定要输入。下面只列出不同的属性)

i.设定和树节点数据关联的字段

setDocJoinField(字段名)

ii.设置精确匹配:默认精确匹配(树上选择一个节点后,查询表数据是否为精确匹配。)

setExactOn(boolean)

iii.设定读表的树节点最小级次:默认1(末级节点一定会读表数据,其他情况要大于等于该值是才读数据)

setExpandLevel(int)

如果你已经定义好了UI和Model部分,恭喜你,自定义参照已基本定义完成。

使用时在进行如下设置即可:

UIRefPane ref = new UIRefPane();

Ref.setRefUI(自定义界面,一般不需定义用系统默认的);

Ref.setRefModel(自定义参照模型)

3. 覆盖参照抽象Model中的方法的注意事项

nc.ui.bd.ref.AbstractRefModel.getData()

参照默认是按照设定好的Sql语句到后台查询数据,如果想自定义取数,可以覆盖getData() 方法。返回自定义数据即可。但要注意,参照的数据默认情况下是有内存级缓存的,缓存的key为AbstractRefModel.getRefSql()的值,如果该值为null,那参照系统将不会缓存数据。如果要使用参照内存缓存,getRefSql()要有非null的值。

第五章参照客户化功能的设定

在初始化一个参照以后,即在本文三或四段落中的红色部分定义好后,无论是系统默认参照还是自定义参照,才可以定制参照的其他功能。

1. UIRefPane中的设置:

setToolTipText(String);//设置参照控件的toolTip

setMaxLength(int);//设置输入字符的最大长度,默认20;

setEditable(boolean);//设置参照是否可编辑

setEnabled(boolean);//设置参照是否可以使用

setDelStr(String);//设置参照输入框不能输入的字符串。

setColor(Color);//设置参照输入框的背景色。

setCacheEnabled(boolean);// 是否使用缓存

setMultiSelectedEnabled(boolean);//是否允许多选择

setAutoCheck(boolean);//是否自动解析输入的参照数据

setButtonFireEvent(boolean);//按钮选择数据后是否触发ValueChanged事件

setNotLeafSelectedEnabled(Boolean);//非末级节点是否可选择(对树参照有效)

setIsCustomDefined(boolean);//是否为用户自定义参照模型

setIncludeSubShow(boolean);//树型参照是否包含下级复选框是否显示

setMultiCorpRef(boolean);//树表参照是否显示公司选项(在参照中动态切换公司)setTreeGridNodeMultiSelected(boolean);//树表参照是否允许选择不同树节点下的数据。

2. refModle中的设置

setUseDataPower(boolean) ;//设置参数是否自动关联基本档案数据权限

setSealedDataShow(boolean);//设置封存数据是否显示

setRefQueryDlgClaseName(String);//设置参照查询类名称(参照的查询功能)

setLocQueryEnable(boolean);//树表参照,在启用查询功能后,是否启用定位查询功能setDynamicColClassName(String);//是否为动态列参照。

setFormulas(String[][] formulas);//设置公,用于参照内容转换;

setDispConvertor(java.util.Hashtable newDispConvertor);//用于参照内容转换的影射表setMatchField(String);//设置参照setpk时匹配的字段

getRefVO_mlang();//为多语言添加此方法, 请覆盖此方法返回要翻译字段数组。详见DefaultRefModel_multiLang

addWherePart(String);参照在运行中动态添加过滤条件,每次在原始的WherePart上添加

对参照数据按指定主键数组过滤。

参数说明:newM_filterPks 要过滤的主键数组

filterStrategy 过滤策略

IFilterStrategy.INSECTION = 0; //参照数据集与过滤数据集的交集

IFilterStrategy. REFDATACOLLECT_MINUS_INSECTION = 1; //参照数

据集减参照数据集与过滤数据集的交集AbstractRefModel.setFilterPks(https://www.doczj.com/doc/8515408269.html,ng.String[] newM_filterPks, int filterStrategy)

3. 注意事项

1.参数区分大小写。

2.设置字段列表和字段时(主键、编码、名称等),注意保持一致。(同时加别名或不加别名)。

3.设置公司主键(setPk_corp)后必须设置setWherePart语句。默认参照建议用setRefNodeName(参照名,公司主键),然后设置/追加where子句

4.where语句开头不要包含where短语。

第六章参照值返回与事件处理

在UIRefpane 中

i.照编码:getRefCode和getRefCodes

ii.参照名称:getRefName和getRefNames

iii.参照主键:getPK和getPKs

iv.参照VO:getVO和getVOs (必须实现convertToVO (Vector)方法才能获取,在参照model中实现)

v.任意列:getValue(字段名)和getValues(字段名)(字段名必须在字段列表中)

参照支持属性变化事件。

i.如果需要监听UIRefPane事件,需要实现ValueChangedListener接口,

ii.加入监听addValueChangedListener(ValueChangedEvent)

iii.值改变将触发ValueChangedEvent

第七章V5 最新变化说明

1. 新增参照节点名称常量接口

nc.vo.bd.ref.RefNodeNameConst

参照初始化举例:

UIRefPane refPane = new UIRefPane();

//公司目录参照。

refPane.setRefNodeName (ref.RefNodeNameConst .CORP)

2. 会计期间默认参照的变化

关于会计期间参照的修改。

最新的需求:2006-08-07会计期间参照由表形改为树表形。

实现:左树为默认会计期间方案下的会计年度,右表为该会计年度下的会计月份。

存在的问题:

以前,会计期间参照的使用者通过设置参照的setWherePart来改变会计期间方案,现在改为树表,使用者要通过setClassWherePart来改变会计期间方案。对于只使用默认会计期间方案的地方不用修改。

修改方法:

((AbstractRefTreeModel)UIRefPane.getRefMole()).setClassWherePart("

PK_ACCPERIODSCHEME = '"+pk_accperiodscheme+"' ")

3. 控制参照某列数据的显示格式接口

如果要控制某列每行数据的显示格式,如控制数量列的显示精度。

可以实现nc.ui.bd.ref.IRefColDispConverter接口。已实现的例子可以参考nc.ui.bd.ref.busi.AccidDefaultRefModel

相关主题
文本预览
相关文档 最新文档