NC公共模板培训.docx
- 文档编号:24581662
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:105
- 大小:2.31MB
NC公共模板培训.docx
《NC公共模板培训.docx》由会员分享,可在线阅读,更多相关《NC公共模板培训.docx(105页珍藏版)》请在冰豆网上搜索。
NC公共模板培训
用友NC二次开发平台
--基于NC模板的开发
用友NC总体技术部
2002-12-25
目录
第一章概述1
1.课程描述1
1.1课程内容1
1.2目标学员1
2.NC模板介绍1
2.1模板功能2
2.2模板开发过程2
2.3用户使用过程2
第二章单据模板3
1.单据模板数据的初始化3
2.单据模板管理4
2.1概述4
2.2设置命令5
2.3单据模板标志的说明7
2.4模板设置的常见问题说明8
3.单据控件9
3.1主要类关系9
3.2界面控件类9
3.2.1单据卡片界面类nc.ui.pub.bill.BillCardPanel9
3.2.2单据列表界面类nc.ui.pub.bill.BillListPanel12
3.2.3单据表格界面类nc.ui.pub.bill.BillScrollPane13
3.3数据控制类13
3.3.1表模型类nc.ui.pub.bill.BillModel13
3.3.2卡片数据控制类nc.ui.pub.bill.BillData14
3.3.3列表数据控制类nc.ui.pub.bill.BillListData15
3.3.4单据界面基本元素nc.ui.pub.bill.BillItem16
3.4其它几个常用的类17
3.4.1单据编辑事件类nc.ui.pub.bill.BillEditEvent17
3.4.2单据编辑接口类nc.ui.pub.bill.BillEditListener17
3.4.3单据编辑接口类nc.ui.pub.bill.BillEditListener217
3.5在单据模板中使用公式17
3.5.1数值运算17
3.5.2加载时从基础档案中取值(加载公式)18
3.5.3编辑时从基础档案中取值(编辑公式)18
3.5.4常用公式19
4.单据模板数据表结构20
4.1单据主表pub_billtemplet20
4.2单据附表pub_billtemplet_b20
5.应用举例22
第三章查询模板23
1.查询模板数据的准备23
2.查询模板管理23
2.1概述24
2.2设置命令24
2.3模板编辑的主要内容25
3.查询对话框基类28
3.1查询基类功能28
3.2主要方法说明29
3.2.1基本使用29
3.2.2主要方法说明29
3.2.3关于常用条件30
3.2.4关于参照31
4.查询模板数据结构32
4.1查询模板主表pub_query_templet32
4.2查询模板子表pub_query_condition32
4.3相关数据结构34
第四章帐表模板35
1.帐表模板数据的初始化35
2.帐表模板管理36
2.1概述37
2.2主要设置内容37
3.账表基类38
3.1基类功能39
3.2主要方法说明39
3.2.1得到帐表模板的内容39
3.2.2动态设置39
3.2.3设置帐表数据40
3.2.4其它主要接口方法40
3.2.5交叉表的主要接口及使用42
3.2.6小计合计:
46
3.2.7按编码级次的分级小级:
48
4.代码范例50
5.帐表模板数据表结构50
5.1帐表模板信息表pub_report_templet50
5.2帐表模板定义表pub_report_model51
5.3帐表模板列分组表pub_report_group52
第五章打印模板53
1.打印模板数据的初始化53
2.模板管理工具53
2.1概述53
2.2设置命令54
2.3模板编辑器54
2.3.1模板菜单55
2.3.2编辑菜单55
2.3.3格式设置菜单56
2.3.4视图菜单59
2.3.5数据变量区59
2.3.6模板设置中的鼠标操作60
3.打印入口62
3.1使用模板打印62
3.1.1数据源接口62
3.1.2模板打印入口PrintEntry63
3.2直接打印63
3.2.1一个例子63
3.2.2必选方法66
3.2.3可选方法66
4.数据表结构68
第六章附录69
1.公式解析所支持的公式69
2.单据控件使用例子72
3.帐表模板中各种交叉结果及相应交叉行、列、值的设置83
第一章概述
1.课程描述
1.1课程内容
本课程是NC二次开发培训的课程之一,介绍NC系统模板的基本架构和开发流程,掌握本课程所学内容之后,您将具备以下能力:
✧理解NC的公用模板
✧设置和维护模板内容
✧利用模板开发NC节点
✧使用模板提供的方法完成复杂业务处理
1.2目标学员
参加本课程的学员,应该至少已具备下列知识:
✧Java语言编程
✧VisualAge使用经验
✧SQLServer使用经验
✧NC系统使用经验
2.NC模板介绍
基于NC界面统一,常用功能部件统一,简化开发过程的思想,NC提供了几个模板来实现一些通用的界面功能,主要包括:
单据模板、查询模板、帐表模板和打印模板等。
所谓模板包括两个部分
:
模板数据:
存放于数据表中(提供界面维护工具),描述模板的具体内容。
例如单据模板数据描述了单据项目及具体的编辑属性,打印模板数据描述了打印格式等信息。
公用控件:
程序员在界面编程中可使用的控件。
例如单据和报表控件是一个UIPanel,查询是一个UIDialog。
2.1模板功能
✧单据模板:
根据设定的模板显示单据界面,可供用户进行数据浏览和编辑
✧查询模板:
根据设定的模板显示查询条件组合对话框,可供用户设定查询条件
✧帐表模板:
将查询结果数据根据设定的帐表格式进行界面显示,并提供交叉表等数据处理功能
✧打印模板:
根据设定的打印格式进行预览和打印
2.2模板开发过程
✧准备需要的数据表和相关代码(VO、BO等代码)
✧生成默认的模板数据
✧利用模板控件编写界面代码
✧进行后续业务处理
流程如下图所示:
2.3用户使用过程
✧使用模板管理定义模板
✧进行模板分配、默认模板设置
✧业务节点操作
第二章
单据模板
单据模板主要功能:
✧支持单主表多子表结构,多子表分页签显示。
✧可设置单据属性和项目属性,包括显示、编辑、锁定、列合计(表体)等。
✧可自定义右键菜单。
✧表格支持显示行号、锁定列、合计并固定合计行。
✧支持全键盘操作。
1.单据模板数据的初始化
✧建立bd_billtype、pub_billtemplet、pub_billtemplet_b表
✧将NC_BILL项目导入资源库中
✧运行包nc.pub.bill.tools下MakeData类
(1)指定ODBC数据源,设置用户名和密码
(2)选择《列表》
(3)在表信息栏选择主表
(4)在字段信息栏选择主、副表字段
(5)指定单据类型编码和单据标题名称
(6)选择生成数据,工具会将生成的模板数据填入相应数据表中
✧4、在业务Panel中添入nc.ui.pub.bill.BillCardPanel类(方法见用例)
✧可用方法publicvoidloadTemplet(String,String,String,String)加载单据模板数据
2.单据模板管理
2.1概述
✧单据模板设置是维护(增加,修改)自定义模板的工具;
✧初始数据为所有默认单据模板和已定义的自定义模板;
✧输出数据为:
生成新的自定义模板或者修改后自定义模板。
2.2设置命令
✧增加:
增加一个自定义模板。
首先判断当前树节点是否为根结点,如果不是找到根结点,然后id=(String)htID.get(strType);取得根结点的id,根据id调用btVO=BillTempletBO_Client.findTempletData(id),取得默认的模板VO,并且备份显示顺序到散列表中。
✧修改:
编辑一个现有的自定义模板。
✓在执行结构设置时,只有showflag为真的项目的显示属性可以编辑,showflag为假的显示属性不允许编辑;因为lockflag和totalflag受显示属性的约束,所以当显示属性由showflag为真变为showflag为假时,相应的修改lockflag和totalflag为假。
✓
对于表体的锁定属性的编辑,showflag为假的项目不允许编辑。
✓对于表体的合计属性的编辑,showflag为真的数值型项目才允许编辑。
✓对于能否编辑属性,因为没有特别的约束,所以直接在界面修改checkBox。
✓
对于能否为空属性,自定义模板受默认模板的约束,如果默认模板的nullflag为真,则自定义模板的能否为空属性不可以编辑,反之可以编辑。
✧删除:
删除一个选中的自定义模板;
已经分配的和被引用的不允许删除;删除时调用delete(id);
✧复制:
增加一个和现有自定义模板内容相同的模板;
✧保存:
对增加或编辑后的模板进行保存;
如果是新增模板,调用insert方法,如果是”修改”,调用update方法。
✧取消:
对正在编辑的模板取消编辑;已经保存的模板不能取消。
✧还原默认顺序:
还原到编辑前的显示顺序;
✧预览:
预览当前的模板,包括列表式和卡片式两种。
注意:
模板名称和标题不能为空;
同一默认模板的自定义模板名称不能重复。
2.3单据模板标志的说明
✧userflag–标志该项目用户能否编辑,如果userflag为假,则该项目用户不能编辑,目前处理方式为设置界面不显示(界面上看到的项目都是userflag为真);
✧showflag–标志该项目是否显示;
✧usershowflag–标志showflag是否可以修改,是用来约束showflag的编辑属性的;
✧editflag–该项目是否可以修改;
✧usereditflag–目前没有使用;
✧lockflag–业务在增加单据时,如果项目的lockflag为真,则该项目的内容不清空,否则清空,由用户重新填写(增加多个单据时,可以减少重复工作);
✧totalflag–只有totalflag为真的项目计算合计;
✧listflag–listflag为真表示支持列表显示模式;
✧cardflag–cardflag为真表示支持卡片显示模式;
✧nullflag–必输属性,如果该属性为真,则在增加单据时,该项目不能为空。
2.4模板设置的常见问题说明
1.表格中有3个只读列:
字段标志、是否卡片、是否列表。
针对的问题:
卡片模板和列表模板的属性是在同一界面设置的,而且字段的显示名称会有重复,这样用户经常在修改了某些属性后发现无效,其实修改的是同名的其他字段,或列表模板中的字段。
增加这3个只读列有助于用户唯一确定他所要修改的字段。
2.有时用户会看到在单据界面上显示的字段,在模板设置中却找不到该字段进行修改,这不是错误。
因为不允许用户修改的单据项在设置界面上不出现。
3.在点击“移动重排”按纽后出现的对话框中,能否选中某个字段是由该字段的初始化数据中的属性决定的。
有时用户会反映无法选中字段,这不是错误。
4.合计属性可在单据模板设置中修改,但是在单据界面中是否起作用有赖于业务逻辑中的控制。
例如:
设置“金额”字段的合计属性为计算合计,但是若业务代码中限制了各个字段的合计属性,甚至界面上不出现合计行,则此属性就不能看到效果,这不是错误。
5.锁定属性可在单据模板设置中修改。
注意:
锁定并不是锁定行或列的意思,而是数据锁定,即当新增单据时,该字段的取值是否默认带出(在设置界面的预览中看不到此效果,这不是问题)。
3.单据控件
3.1主要类关系
3.2
界面控件类
3.2.1单据卡片界面类nc.ui.pub.bill.BillCardPanel
卡片界面分为3部分:
表头、表体和表尾。
表头、表尾显示为多个独立的编辑控件,对应业务主表的内容;表头部分支持多页签显示
表体显示为表格样式,支持多页签,每个页签对应一个业务子表的内容。
主要属性:
1.publicintheadScale=40;//表头区域布局时所占的最大比例,默认为40%
2.protectedUIPanelpnlHeader;//单据头部Panel
3.protectedUIPanelpnlBody;//单据体部Panel
4.protectedUIScrollPaneuslTail;//单据尾部ScrollPane
5.protectedBillDatam_bdData;//单据数据结构
主要方法:
✧初始化
1.publicBillCardPanel()//BillCardPanel构造子
2.publicBillCardPanel(intheadScale)//BillCardPanel构造子
3.publicvoidloadTemplet(StringbillType,StringbusiType,StringoperatorID,StringpkCorp)//加载单据模板
✧单据功能控制
1.publicvoidsetRowNOShow(booleannewValue)//设置表体是否显示合计行
2.publicvoidsetRowNOShow(Stringtablecode,booleannewValue)//设置编码为tablecode的表体是否显示合计行
3.publicvoidsetRowNOShow(booleannewValue)//设置表体是否显示行号
4.publicvoidsetRowNOShow(Stringtablecode,booleannewValue)//设置编码为tablecode的表体是否显示行号
✧单据元素控制
1.publicBillItemgetXXXXItem(Stringkey)//获得元素(XXXX为Head、Body、Tail)
2.publicBillItemgetBodyItem(Stringtablecode,Stringkey)//获得tablecode子表元素
3.publicBillItem[]getXXXXItems()//获得元素数组(XXXX为Head、Body、Tail)
4.publicBillItem[]getBodyItems(Stringtablecode)//获得tablecode子表元素数组
✧单据数据控制
1.publicvoidsetXXXXItemValue(Objecto,Stringkey)//设置元素值(XXXX为Head、Tail)
2.publicvoidsetBodyValues(Vectorv)//设置表体数据
3.publicvoidsetBodyAt(Objecto,introw,Stringkey)//设置表体row行key列的值
4.publicVectorgetBodyData()//获得表体数据
5.publicObjectgetBodyDataAt(introwIndex,StringstrKey)//获得表体rowIndex行,strKey列的数据
✧单据表格控制(实际调用BillModel的方法)
1.publicintgetBodyColByCol(intcol)//由显示列对应实际列号
2.publicintgetBodyColByKey(StringstrKey)//由关键字对应实际列号
3.publicvoidaddLine()//增加行
4.publicbooleaninsertLine()//插入行
5.publicvoidcopyLine()//复制行
6.publicvoidpasteLine()//粘贴行
7.publicbooleandelLine()//删除行
8.publicvoidlockTableCol()//锁定列
9.publicvoidunlockTableCol()//解除锁定列
✧一些重要方法
1.1.publicUITablegetBillTable()//得到表体表
2.2.publicBillModelgetBillModel()//得到表体表模型
3.3.publicBillDatagetBillData()//获得单据数据控制
4.4.updateData()//更新数据
5.5.resumeData()//恢复单据数据
✧业务数据加载
1.publicvoidsetBillValueVO(AggregatedValueObjectbillVO)//加载数据(单子表)
2.publicvoidsetBillValueVO(ExtendedAggregatedValueObjectbillVO)//加载数据
3.publicvoidgetBillValueVO(AggregatedValueObjectbillVO)//获得数据VO(单子表)
4.publicAggregatedValueObjectgetBillValueVO(StringbillVOName,StringheadVOName,StringbodyVOName)//根据类名获得数据VO(单子表)
5.publicvoidgetBillValueVOExtended(ExtendedAggregatedValueObjectbillVO)//获得数据VO(多子表)
6.publicExtendedAggregatedValueObjectgetBillValueVOExtended(StringbillVOName,StringheadVOName,String[]bodyVONames)//根据类名获得数据VO(多子表)
3.2.2单据列表界面类nc.ui.pub.bill.BillListPanel
单据列表界面分为表头、表体两部分,都显示为表格。
表体支持多子表,显示为多页签,每个页签对应一个业务子表的内容。
主要属性:
1.privateBillScrollPanem_ParentPanel=null;//表头
2.privateUIPanelm_bodyPanel=null;//表体Panel
3.privateBillListDatam_ListData=null;//单据列表模板数据结构
主要方法:
1.publicvoidloadTemplet(StringbillType,StringbusiType,StringoperatorID,StringpkCorp)/加载单据模板
2.publicBillListDatagetBillListData()//返回单据列表数据控制
3.publicBillScrollPanegetParentListPanel()//返回表头的BillScrollPane
4.publicBillScrollPanegetBodyScrollPane(StringtableCode)//返回编码为tablecode的子表的BillScrollPane
5.publicAggregatedValueObjectgetBillValueVO(introw,StringbillVOName,StringheadVOName,StringbodyVOName)//由类名获得选择行的单据VO
6.publicAggregatedValueObject[]getMultiSelectedVOs(StringbillVOName,StringheadVOName,StringbodyVOName)//由类名获得选择单据数组
7.publicvoidsetHeaderValueVO(CircularlyAccessibleValueObject[]headVOs)//设置表头数据
8.publicvoidsetBodyValueVO(CircularlyAccessibleValueObject[]bodyVOs)//设置表体数据
3.2.3单据表格界面类nc.ui.pub.bill.BillScrollPane
具有行号列、合计行功能的ScrollPane,并支持锁定列。
主要属性:
1.protectedBillTablem_btTable=null;//主表
2.protectedBillTablem_btFixColTable=null;//固定列表
3.protectedBillTablem_btFixRowTable=null;//固定行表(合计行)
4.protectedBillTablem_btRowNOTable=null;//行号
5.protectedBillModelm_bmModel=null;//表模型
主要方法:
1.publicvoidsetRowNOShow(booleannewValue)//设置是否显示行号
2.publicvoidsetTableEnabled(booleannewEdit)//设置表的编辑状态
3.publicvoidshowTableCol(StringstrKey)//显示隐藏表体列
4.publicvoidsetShowFlags(BillRendererVOnewRendererVO)//设置表格的绘制器
5.publicBillTablegetTable()//获得主表
6.publicBillModelgetTableModel()//获得表模型
3.3数据控制类
3.3.1表模型类nc.ui.pub.bill.BillModel
单据表体表模式,带有默认合计行表模式、行号表模式。
主要属性:
1.protectedBillItem[]m_biBodyItems=null;//表体元素数组
2.protectedDefaultTableModelm_tmlTotal=null;//合计行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NC 公共 模板 培训