在层级报表开发里,下面哪个条件不是商务部生活必需品报表的

查看: 6685|回复: 25
内审部门制定的有关内审制度,需要在公司哪些层级范围内进行讨论、会签?
现在就加入吧!
CMA获得政府及各大企业集团一致推荐
一年内免费直播参与
历届活动视频回放
Excel知名公众号作者
随书扫码看视频学Excel
内审部门制定的内审有关制度、规定,我个人认为分为以下三个层次:
1、公司内审纲领性制度,名称可以有很多,比如《内部审计制度》、《内部审计章程》……
2、分项审计制度、规定或细则,比如《内部控制制度审计制度》、《经济责任审计制度》、《财务审计制度》
3、部门内部管理的制度,比如《审计复核制度》、《工作底稿编制办法》、《外勤工作指引》等等
大家认为上述三个层级的制度或规定,在发布前或定稿前,需要经过公司哪些层面的人会签、讨论?
偶个人认为,第一层级,公司的纲领性制度,需要经过公司高层讨论、会签;第二层级需要在公司范围内发布,不需要相关部门会签;第三层级属于部门内部管理规范,不需要会签也不需要发布,仅在部门内部使用。
不知各位的公司是怎么操作的,敬请讨论,谢谢!
我们啥也没有
没有制度?还是制度下发前没有会签?
我去年刚毕业来,经理就让我写内审制度,写出来的我自己都不忍心看。现在也没人管这事,年终总结我提出这个事情,现在自己默默整理内审工作模板,因为我们审计通知书、报告等都基本是没有太固定的格式
第一层级的内审制度应报公司董事会审批。
第一层级的内审制度应报公司董事会审批。
是的,在征求高管层的意见后报批。其他层级呢?
第一层级的内审制度属于公司的基本制度......
& &第一层级的内审制度属于公司的基本制度,按照公司法的规定,应报公司董事会审批,其他内审制度则应该报公司总裁会议审批。
第二层级属于公司发文,需要总裁签发,但是否需要其他部门会签?第三层级有必要吗?并不需要发文
总裁办公会议应该是所有部门的领导参加.......
总裁办公会议应该是所有部门的领导参加,只要会议通过,就表示得到了其他部门的认同。至于第三层级的制度,个人认为最好也采用这种审批方式,以利于审计部的工作规范化。
其他部门懂内审部的内部管理规范吗?我不太赞同。
这可能与各自公司的管理模式以及决策流程相关
我们公司的管理程序是这样的,必须通过总裁会议审批后,才能执行。这可能与各自公司的管理模式以及决策流程相关。
嗯,谢谢你的回复。
我来这个社区不久,常看你的帖,受益匪浅,刚才说得不对,请前辈指正哈
我来这个社区不久,常看你的帖,受益匪浅,刚才说得不对,请前辈指正哈。
第一层级的制度大家均无异议,但对于第二层级,
第一层级的制度大家均无异议,但对于第二层级,我认为要同公司内部的其他相关制度相互支撑,如下例:《经济责任审计制度》更多是对于离任人员进行的,如果此项制度不与人力资源部的离职流程关联起来,往往会出现以下局面,职业经理人已离职,离任审计还未开始做。《内控审计制度》如不与制度管理部门进行沟通,就会出现资源浪费的情况,表现为:制度管理部门、审计部门各行其是,各做各事,信息共享程度不高。
结论:第二层级的制度一定要同专业职能部门(如制度管理部门、人力资源部等等)进行广泛沟通,最好能将内审制度同其他管理制度相衔接,保证内审制度的可执行性,避免出现两张皮的现象。
这么说太客气了。每个公司管理的精细程度不一样,确实存在差异的。
让大家会签,也会出现有些部门为了自身利益,改动制度。
说点想法:
第一层级制度需要董事会通过,全公司发布。
第二层级由公司审计部门制定,董事会的审计委员会和公司管理层会审阅,也需要在全公司发布。
第三层级就是内部审计部门自己制定的细则和规程,对内部审计具体工作有指导意义,不对外发布。
同意,谢谢!第二层级制度,你指的管理层是公司高管层还是包括中层?
中层可以征求意见,决定还在高层。
第一级,只需要审计部门向其汇报的部门讨论、签署。其他部门,告知即可。
第二级,需要与有关的部门讨论,但不需要会签。
第三级,不需要讨论,不需要会签。
审计部的制度,我觉得除了向其会的部门可以签署,任何部门都不应该有此权力。否则,如果他们不签,还做不做?
Powered by返回集深官网
通用展现页面可以通过展现参数和模式来控制报表展现的效果。
使用通用展现页面进行报表展现时,可以通过全局展现配置、资源展现设置及URL来进行展现参数、模式值的设置。由于报表展现标签数量较多,以上3种方式都仅能设置部分常用参数、模式或标签属性的值。具体可以设置的项参见:。其它不常用标签介绍参见: 。
全局展现设置
在首页菜单【报表统计展现】-【全局展现设置】中进行设置。通过此页面进行的设置,对系统中展现的所有报表都生效。
该功能模块为报表展现的参数提供友好的配置界面,该页面可配置的参数分为几大类:工具栏参数,报表显示区域参数,打印导出参数,通用查询参数,填报参数等。
&&&&&目前已经保证常用参数都已经包括在全局展现设置界面,用户可以根据自己的使用情况进行设置。
资源展现设置
在【资源中心】下,报表资源操作列的【更多】操作中包含一个【展现设置】的按钮。点击即可设置该报表资源的展现参数、标签和展现所用模式。
资源展现配置优先级高于全局展现配置,即在全局展现配置和资源展现配置中同时配置了某个展现属性时,以资源展现设置中的设置为准。
URL中进行设置
报表展现的属性还可以通过URL来进行设置,直接在URL后加上要设置的参数名及参数值即可。如在url中添加参数needPrint=no,隐藏打印按钮。
能通过URL进行设置的参数仅包含章节提到的参数和模式。
通用展现页面本身特有的参数主要用于对报表调用和部分展现的控制。使用资源ID进行报表调用时resID或sys_fid必需设置;使用文件名称进行报表展现时raq或rpg参数必需设置;其它参数为非必需参数。通用展现页面特有参数及其具体说明如下:
报表调用相关参数
resID或sys_fid
资源ID:新建报表资源时生成的一个ID,可以通过该ID找到报表资源的路径、文件名等信息用于报表展现。
资源类型:不同的资源类型的标识。类型为数字,具体资源及其对应的编号如下:
复杂报表&18
通用查询&10008
手机报表&10009
报表组&& 10010
自定义jsp&21
统计报表&4
简单填报表&8
行式填报表&16
填报表组&32
统计报表组&64
自由格式报表&128
分组报表&12
自由报表&13
交叉报表&14
组合报表&17
Dashboard模板&9
Dashboard面板&10
Dashboard组件&11
资源名称:在资源中心下显示的名称,还用于展现页面默认的标题名称。
serverPath
V5报表文件路径,展现时不指定此路径,则根据资源ID从数据库中查询得到。指定后使用指定的报表文件路径。不从数据库中进行查询。
报表文件或报表组文件路径及名称:使用文件名称进行报表调用时必须设置的参数,包含路径的文件名称。具体参见。
单独模块调用时为 alone,是否似乎单独调用取决于misIniConfig.xml中conf_appType 属性,1为平台,0为单独调用。
工具栏参数
needSubscribe
是否显示订阅按钮:不设置时默认为yes
needImportExcel
是否需要导入excel:不设置时默认为yes
是否需要分页:不设置时默认为yes
needPageMark
是否需要分页按钮:不设置时默认为yes
toolbarLocation
工具条位置:不设置时默认为top。top:上端 bottom:底端 none:无工具条
是否需要打印按钮:不设置时默认为no
flashPrint
是否使用flash打印:不设置时默认为yes
needDirectPrint
是否需要直接打印按钮:不设置时默认为no
needSaveAsExcel
是否需要导出Excel按钮:不设置时默认为yes
needSaveAsPdf
是否需要导出Pdf按钮:不设置时默认为yes
needSaveAsWord
是否需要导出Word按钮:不设置时默认为yes
needSaveRemote
是否需要远程导出按钮:不设置时默认为yes
needSaveAsCsv
是否需要导出csv按钮:不设置时默认为yes
needSaveAsText
是否需要导出txt按钮:不设置时默认为yes
工具栏参数(高级设置)
是否需要导出debug按钮:不设置时默认为no
extendButtons
自定义按钮:工具栏添加按钮
报表显示区域参数
needScroll
是否锁定表头:不设置时默认为yes
是否可以拖拽报表单元格宽高:不设置时默认为no
needLinkStyle
是否使用自定义超链接样式:不设置时为no,使用平台默认超链接样式
reportAlign
报表位置对齐:不设置时默认为left。包含属性left、right、top 、middle 、bottom
allowedFormatAdjust
是否导入排序和换列的JS:不设置时默认为空。colheadsort:排序 ;colheaddrag:换列 ;都要引入的话中间用 | 分隔
实现排序功能需要报表表头区设置html事件为&&sortable='true'& ,数据区html事件为&&exchangeable='true'& ;
实现换列功能需要报表表头区设置html事件为&&dragable='true'& ,数据区html事件为&&exchangeable='true'&
autoRefresh
是否自动刷新:整数,不设置时默认为yes(默认30秒)
fastShowPage
是否快速展现:不设置时默认为yes,快速展现说明可参考 。
报表显示区域参数(高级设置)
报表分页宽度:整数,单位为px,负数表示无穷大,不设置时默认为0。
报表分页高度:整数,单位为px,负数表示无穷大,不设置时默认为0。
paddingLeft
报表展现页面左边距:整数,单位为px,整数表示右移,负数表示左移。默认为15px,即右移15个像素。例如:paddingLeft=20
paddingTop
报表展现页面上边距:整数,单位为px,整数表示下移,负数表示上移。默认为5px,即下移5个像素。例如:paddingTop=20
报表缩放比例: 实数,不设置时默认为1
页面标题:报表展现页面标题,不设置时默认显示为resName的值。可以通过该参数手动设置该值。
reportAreaWidth
报表展现区域宽度:不设置时默认为0。整数,象素值.或者百分数,如80%
reportAreaHeight
展现报表区域高度:不设置时默认为0。整数,象素值.或者百分数,如80%
打印导出参数
excelPageStyle
存为Excel时的分页方式,不指定此属性值,则系统弹出对话框让用户选否1复杂、报表组0(不分页)或1(分页)
flashPrint
使用flash打印:默认为yes,no为Applet打印方式。
isNeedFormula
导出excel是否导出公式:不设置时默认为0。0不导出、1导出
excelFormat
导出excel的格式:不设置时默认为2003
wordFormat
导出word的格式:不设置时默认为2003
pdfExportStyle
存为PDF时,导出的文件分页方式及导出类型,导出类型分为图形方式及text方式。否text,0复杂、报表组属性值格式为: &文件类型,是否分页&.文件类型取值为:graph: 将文字导出为图形方式.text:将文字导出为文本方式.1表示要分页,0表示不分页
打印导出参数(高级设置)
remoteSaveHome
远程导出路径,远程导出时导出文件存放的路径。通过文件路径选择弹出框,自定义远程导出路径。
appletJarName
报表打印的applet文件名:不设置时默认为runqianReport4Applet.jar、dmGraphApplet.jar、appletPatch.jar、flex-messaging-core-2.0.jar
saveAsName
报表导出另存为时的文件名,可自定义报表导出时的文件名称
导出excel时显示比例属性:不设置时默认为100
通用查询参数
showSelectedFilters
查询面板是否显示已选条件:不设置时默认为yes
hiddenReportAfterShow
报表展现后是否收起通用查询面板:不设置时默认为no
defaultPackupQryPanel
用于控制首次预览带参数表单或通用查询的报表时,是否显示通用查询面板和参数表单
hasQrPanle
是否隐藏查询面板:不设置时默认为no。DBD特有参数 DBD参数,DBD中展现时需要收起查询面板
autoDisplay
是否自动显示报表:不设置时默认为0。0:自动显示报表,1:不自动显示报表(有通用查询时不自动显示报表)
commonQueryLocation
通用查询面板位置:不设置时默认为top。top:上端; bottom:底端; left:左端; right:右端
查询面板最大宽度,不设置时默认为800
btnDisTime
查询按钮禁用时间:不设置时默认为30。复杂、报表组、分组、交叉 点击查询按钮之后按钮不可用,btnDisTime秒之后按钮出现,用于防止数据量过大报表未加载完成多次重复发出报表请求
通用查询参数(高级设置)
commonQueryPath
通用查询文件路径。通用查询json文件所在路径。
commonQueryJson
通用查询结果json:json串,配置该结果串后可以直接查询出报表结果(不展现查询面板和条件值的设定)
configProcessor
通用查询预处理类:不设置时默认为no。
移动端展现参数
分辨率:不设置时,默认为800*480。新建手机报表时用户可以根据移动应用客户端的分辨率进行重新选择或者自定义
分辨率自适应:不设置时,则按原始分辨率。新建手机报表时用户也可以根据需要重新选择分辨率,具体说明可参考
报表底色:不设置时,默认为#FFFFFF。客户端报表底色是报表在移动设备上展现时,当报表不能完全填充屏幕大小而出现了空白区域,该空白区域所显示的底色
是否使用填报数据主键控制功能:不设置时默认为no
validOnSubmit
提交填报时是否校验数据有效性:不设置时默认为yes
validOnShow
展现填报表时是否校验数据有效性:不设置时默认为no
autoHideEditor
编辑控件是否自动隐藏:不设置时为yes
importExcelAppend
导入excel时是否新加行:不设置时默认为yes
promptBeforeUnload
离开页面时提示提交数据:不设置时默认为no
promptAfterSave
提交后是否弹出确认框:不设置时默认为yes
backAndRefresh
填报完成后是否刷新报表:不设置时默认为yes
submitTarget
填报完成后刷新方式:不设置时默认为_self
填报参数(高级设置)
inputListener
填报监听类
submitAsync
控制提交数据的ajax请求是异步还是同步,并根据该值返回提交成功与否的标志。不设置时默认为true,不返回标志。
设置为false时:请求为同步方式,调用rptObj_report1.submit()方法,返回是否填报成功。适用于开发者自行调用该方法提交并处理提交未成功的情况。
设置为true时:请求为异步方式,调用rptObj_report1.submit()方法,不会返回是否填报成功。填报如失败,则会异步跳转到inputExceptionPage页面(inputExceptionPage是vr的一个标签属性,可以设置一个jsp页面;如果不设置会提示提交数据失败)。
数据分析参数
showGraphOnly
是否只显示统计图:不设置时默认为yes(数据分析报表)
exportPageCount
数据分析类报表导出行数:不设置时默认为5000
fastPivot_pageCount
数据分析类报表每页展现行数:不设置时为40
大数据量参数
是否使用大数据分页展现,默认为no。设置该参数后,报表展现标签类型为html,具体标签种类为big
用于指定报表中的大数据量数据集,只能指定一个。没有设置时,默认使用报表的第一个数据集
是否使用自动分页:不设置时默认为yes。大数据量展现标签特有
totalCountExp
总记录数:Big标签特有润乾的非数据集函数,并且返回的值应该是一个整型数据。如用query执行一个count的sql
每页记录数,分页后每一页包含的记录数:不设置时默认为10。Big标签,分组整数
countPerExportPage
导出时每次取数的条数:整数,不设置时默认为10。Big标签特有
cachePageNum
报表每次计算页数:不设置时默认为5。Big标签特有整数
exportExcelOneSheet
是否导出到excel的一个sheet页:不设置时默认为no。Big标签特有
countPerExportPage
导出时每次取数的条数:整数,不设置时默认为10。Big标签特有
折叠报表参数
isCollReport
是否是折叠报表:不设置时默认为 no
collReportType
折叠报表类型:不设置时默认为 0。 0:不定层级;1:树形;2:多个报表
customJsController
折叠报表设置类型:默认为空。为json格式,行折叠报表设置为:{&treeReport&:&true&};行折叠异步加载报表设置为:{&treeReportAsync&:&true&};列折叠报表设置为:{&colCollapse&:&true&};自定义分组报表设置为:{&customGroup&:&true&}。
参数表单参数
paramProcessor
参数表单监听类:不设置时默认为No。V4参数表单特有参数
reportParamsId
参数池ID:复杂、报表组、v4 报表查询时会将参数名和参数值存放到参数池中,这些参数对应一个参数ID;通过参数ID可以取到报表对应参数值
参数表单文件名:V4参数报表 指定V4参数模板文件,此路径为相对于reportConfig.xml中reportFileHome的路径
是否显示参数表单:不设置时默认为TRUE。仅适用于含参数表单的V4报表
报表组参数
报表组异步加载:不设置时默认为 yes
报表组settings属性 :格式:{sheets:{sheet1:{inputListener:\&com.runqian.xxx\&,needPage:\&yes\&},sheet2:{needPageMark:\&no\&}}}
可设置属性值,其中前三个如果没有定义的话,就为空值,后面的9个属性如果没有在settings里定义的话,就沿用报表组标签中设置的属性值
其它设置参数
showReportListener
SR实现类类名:调用SR监听类进行业务逻辑处理上,通过配置该参数进行实现类的调用。具体参见:
viewReportListener
VR实现类类名:调用VR监听类进行业务逻辑处理上,通过配置该参数进行。实现类的调用。具体参见:
模式ID:报表展现时使用的的模式ID,具体参见:
报表样式文件名称:报表展现页面样式控制的样式文件名称,以及报表中全局样式使用的样式文件名称。使用该参数可以实现页面样式切换,达到动态换肤的效果。当需要设置多个样式文件时以分号分隔。如:cssFiles=test1.test2.css。
js文件的引用,存储展现页面中使用到的JS方法的文件名称。可以配置多个文件,以分号分隔。
srCssFiles
SR引入CSS文件组:复杂、报表组、分组、交叉 SR页面引入的css文件,可以配置多个文件,以分号分隔
SR引入JS文件组:复杂、报表组、分组、交叉 SR页面引入的JS文件,可以配置多个文件,以分号分隔,可参考 。
encodeAllParam
是否对所有参数解密展现:参数值为yes或no,为yes时,对所有参数进行解密后展现,为no时不对参数进行解密,默认值为no。具体参见。
encodeParamName
需要进行解密的参数名:值为需要解密的参数名称,多个参数名之间用逗号分隔。具体参见
showPageCallBack
展现回调函数
异常信息的显示页面:不设置时默认为/mis2/error.jsp
formFilePath
自定义查询form的jsp文件:自定义查询jsp页面的文件路径,相对路径,相对于应用根目录(reportmis)
&&&& 报表展现标签类型:用于手动指定报表使用哪个标签库文件来进行报表展现。不设置时默认自动根据报表类进行判断选择标签展现,可以手动设为viewReport和html。值为viewReport时,使用viewReport.tld中的标签进行展现;值为html时使用runqianReport4.tld中的标签进行展现。
具体的标签种类:用于手动指定报表具体使用哪组标签进行报表展现。不设置时默认自动根据报表类进行判断选择标签展现。与showType参数结合使用,showType为viewReport时,取值为report,input,html,group;showType为html时取值为html,group,big。
功能与用途
模式是为了简化报表展现URL,减少标签参数输入与设置所提供的一种展现设置方法。在实际应用中,可以将一组标签及其属性值保存为一个模式。在报表展现时,直接调用模式来进行报表展现。
在使用模式进行展现控制的基础上还能够通过标签来进行控制。下面举例说明模式的作用及使用方法。
平台中有一部分大数据量报表,达到百万、千万甚至更大的数据量。在对这类报表进行展现时,需要使用分页计算标签来快速展现。
分页取数计算标签需要设置的标签属性不止一个,这时为了方便调用进展现可以进行如下设置:
将分页计算标签的标签属性:showType=html;vrType=big;autoMode=yes;totalCountExp=200000;pageCount=50;cachePageNum=40;cellsNum=0保存为模式1001。
在需要展现此类大数据量报表时,只需要调用模式1001,即可快速展现大数据量报表。而无需设置众多标签属性值。当需要修改或添加其中某个属性值时,只需要在模式的基础上设置其它标签属性的值即可。如:...&schemaId=1001&autoMode=no。
模式使用时,先自定义一组属性,可在\mis2\custom\vrsr\SRParamSchema.json 文件中进行定义。完全相同的属性组,在模式池中只保存一份。
设置一种展现模式,设置其它展现参数,输入报表资源ID或名称,当模式和参数中都包含同一属性时,以参数设置的属性值为准。
在进行模式调用时,直接使用schemaId作为模式ID的参数名进行调用即可,模式的设置如下:
[&&& {&&&&&&& &schema&: &1001&,&&&&&&& &params&: &showTpe=html&vrType=big&autoMode=yes&totalCountExp=200000&pageCount=50&cachePageNum=40&cellsNum=0&&&& }&&& ]
调用此模式可在展现设置里设置模式为1001,也可在URL后拼接&schemaId=1001。
当用户希望使用通用展现页面展现报表过程中时某些操作触发自定义的JS事件,可以通过添加SR事件来实现。
用户可添加SR事件,添加的事件方法会在对应时候触发。
报表展现页面中JS事件调用方法及详细说明如下:
通用把表展现页面展现报表时,传递参数srJsFiles=js文件名
在js文件中使用“showReportObj.bind('事件名称', 方法名称,this);”的格式对报表js事件进行调用
事件名称:不相同的事件名称其触发条件不同,具体的事件名称会在下面详细说明。
方法名称:为标签中定义的js方法名,例如:test1。
事件名称及对应触发条件:
点击查询按钮时触发
hideQueryPanel
隐藏查询面板时触发
showQueryPanel
查询面板显示出来后触发
loadReportFinish
报表展现完成时触发
resizeWindow
报表展现窗口大小改变时触发
在报表预览点击查询按钮时触发test1.js中的callBack_loadSuccess方法
showReportObj.bind('doQuery',callBack_loadSuccess, this);
URL参数加解密
通过url传递参数时可以对参数加密后再进行传递。在报表展现时再对URL中参数进行解密。对URL进行加解密时,既可以选择对URL中所有参数进行加解密,也可以只对部分参数进行加解密。
对参数加解密时有部分参数比较特殊:
1、使用conf_showReportClass为com_runqianapp_showReport_ShowReportGEZ进行展现时(平台默认展现方式),默认会对报表名称、报表路径、资源名称进行加解密展现。
&&&使用conf_showReportClass为com_runqianapp_showReport_ShowReportVR进行展现时默认不对任何参数进行加解密展现。
2、对所有参数进行加解密展现时,有三个特殊参数,由于是在报表URL解密前进行调用,所以不能对它们进行加密:conf_showReportClass、schemaId和resID。
URL参数加密
JS中加密方法
&&&&&&&& 1、在JSP中引用Base64.js
&&&&&&&& 2、调用bases64方法对URL中所有参数值进行加密
&&&&&&&& 3、传递加密后的URL
&&&&&&&& 示例代码如下:
&&&script type=&text/javascript& src=&&%=request.getContextPath() %&/mis2/gezComponents/jsUtils/Base64.js&&&/script&&&&script language=&javascript&&& function show_Report(){&&var base64 = new Base64();&&var fid= base64.encode(&10052&);&&var fname= &5ZCE5Zyw5a6i5oi36ZSA5ZSu5oOF5Ya157uf6K6h6KGo&;&&var type=base64.encode(&18&);&&&window.open(&http://192.168.0.107:8800/reportmis/mis2/reportcenter/showReport1.jsp?& resID=&+fid+&&resType=&+type+&&resName=&+fname+&&resIdForTab=&+fid);}&/script&
报表中加密方法
&&&&&&&& 使用encode()函数进行加密,加密的内容既可以是值,也可以是表达式。
&&&&&& & 例如:encode(demo_订单.货主地区)。
URL参数解密
对所有参数解密
&&&&&&& 当展现报表的URL中所有的参数都进行过加密时,可以通过设置encodeAllParam=yes来对所有参数进行解密,encodeAllParam默认为no,默认不对所有参数进行解密后展现。
&&&&&&&& resID=&MTAwNTI,&resType=MTg,&resName=5ZCE5Zyw5a6i5oi36ZSA5ZSu5oOF5Ya157uf6K6h6KGo&resIdForTab=MTAwNTI,&encodeAllParam=yes
对指定参数解密
&&&&&&& 如果传递展现报表的URL时,只对其中部分参数进行了加密。那么在报表展现时需要指定,进行解密的参数名。设置格式为:encodeParamName=参数名,多个参数名之间用逗号分隔。
&&&&&&& 示例:
&&&&&&&&&arg1=5piG5piO&encodeParamName=arg1
设置快速展现,系统会将与数据无关的内容生成缓存文件,展现报表时直接调用缓存文件,达到减少资源加载、加快展现速度的效果。
可以通过“全局展现设置”或者“资源展现设置”页面控制是否快速展现,系统默认设置为快速展现。
生成方式:
在资源进行修改或者保存时生成对应的缓存文件;删除资源时,对应缓存文件同时也会被删除。
单独资源的展现设置改变时生成。
集群环境,每个应用下都会生成缓存文件,同时会定时刷新,更新缓存文件。
快速展现缓存生成位置:mis2\vrsr\showCache\。
报表展现设置中设置“是否快速展现”为“是”,点击资源名称,则会触发快速展现,调用已经生成的缓存文件,快速展现资源。
如果资源展现报错,可通过展现设置界面将“快速展现”设置关掉,并删除缓存文件,检查问题是否依然存在。
更多文章:报表展现与输出 - 报表展现-复杂、自由及报表组展现 | 快逸报表工具用户手册
&复杂、自由及报表组展现
复杂、自由及报表组展现
V5中报表的展现可以通过定义Tag标签的属性及其值,在不需用户调用API情况下,用tag标签完成报表的解析及运算,并按用户配置的属性要求将HTML文件流输出到客户端。
V5中提供了两种报表展现的方式供用户选择:
viewReport:用户自定义JSP,在JSP中调用报表展现的标签,进行报表展现输出。以下简称VR。
showReport:使用系统自带的,报表通用展现页面进行报表展现。此页面可以展现所有类型的报表,用户无需编码直接调用即可。以下简称SR
v5标签库文件viewReport.tld中包含了4组报表展现的标签,分别是:
report:用于展现单个浏览式报表的一组标签。
input:用于展现单个填报表的一组标签。
group:用于展现报表组的的一组标签。
html:为方便原使用V4的用户升级至V5,进行的标签兼容处理。可用于展现普通报表和填报表。
标签详细说明及介绍参见:。
注意:使用html标签展现的报表仍通过数据库连接池的方式进行取数。不能使用数据管理中定义的数据源、数据集。使用其它VR标签展现的报表两种数据连接方式均可正常展现。
使用VR进行报表展现时,用户需要自定义JSP,调用VR标签来进行报表展现。用户可以根据VR用法说明手写JSP代码,也可以通过VRdemo页面生成展现源码的功能,设置好展现标签后,生成展现源码,将源码保存至JSP来进行报表展现。
VRdemo页面访问地址:。
使用VR进行报表展现包含至少以下两步:1.声明标签库文件;2.调用报表展现标签进行报表展现。具体说明及示例代码如下:
声明标签库文件
声明标签库文件语句的格式如下所示:
&%@ taglib uri=&/WEB-INF/viewReport.tld& prefix=&view& %& 或 &%@ taglib prefix=&report& uri=&/viewTag&%&
此定义语句必须写在JSP的开头。uri为标签库文件路径及名称;prefix为指定tag标签前缀名。
指定标签库文件及其路径有两种方式,直接指定和间接引用。
&%@ taglib prefix=&report& uri=&/WEB-INF/tld/viewReport.tld&%&
间接引用的方式需要先在web.xml中定义标签库文件的路径,然后在JSP中直接引用定义好的标签名即可。间接引用的好处在于当标签库文件存放路径改变时,只需要修改web.xml中的定义,而不用需要修改每个jsp。
web.xml中定义格式如下:
&taglib&&taglib-uri&/viewTag&/taglib-uri&&taglib-location&/WEB-INF/tld/viewReport.tld&/taglib-location& &/taglib&
在JSP中的引用格式如下:
&%@ taglib prefix=&report& uri=&/viewTag&%&
标签前缀名
prefix的值可以自己指定,但tag标签中的前缀必须与其保持一致。
调用标签发布报表
调用标签发布报表的代码格式如下:
&view:report name=&report1& .../&
其中view为声明标签库文件时指定的prefix的值。report为标签组名称,根据要展现的报表类型来设置,浏览式报表为report;填报表表为input;报表组为group;具体参见本节开头。
在其后可以设置其它标签属性的值。其中name、srcType 两个属性为必须设置的属性。
如要发布的报表源为报表文件,srcType值为file。
如要发布的报表源为经过API处理的报表设计对象,srcType值为bean。
srcType为file时fileName为必填,srcType为defineBean时beanName为必填
也可以通过VRdemo页面,设置标签属性后生成展现报表的JSP代码,来进行报表展现。具体标签属性及其详细说明参见:
&%@ taglib prefix=&view& uri=&/WEB-INF/tld/viewReport.tld&%&&html&&body style=&margin: 0; width: 100%; height: 100%; overflow:&&&view:report name=&report1& srcType=&file& fileName=&/vrdemo/report.raq&toolbarLocation=&top&/&&/body&&/html&
工具栏自定义
VR工具栏中包含的按钮如下图所示,按钮按区域进行存放。对整个工具栏、工具栏的某个区域、工具栏上的按钮都提供了控制和自定义修改的方法。默认工具栏包含的按钮及区域划分如下。
注意:工具栏自定义相关功能在SR中同样适用。
位置及按钮控制
可以通过标签来控制工具栏的显示位置及工具栏上包含的按钮。例如:工具栏显示位置与是否显示通过标签toolBarLocation来控制,工具栏上的每个按钮的对应一个标签可以控制是否显示,如打印预览按钮是否显示可以通过needPrint标签来控制,具体标签及详细说明请参见:。
添加自定义按钮
为方便用户在工具栏上添加一些自定义的按钮,提供了extendButtons标签属性,通过调用该标签属性,可以实现在默认工具栏添加自定义按钮。
自定义按钮默认添加到其它按钮区域(otherButtonArea)。
按钮的定义格式如下:
[{ico:””,title:””,click:””},{ ico:””,title:””,click:””},….重复多个按钮]
[{ico:&images/excel.gif&,title:&button1&,click:&alert(1)&} ,{ico:&images/test.png&,title:&button2&,click:&tesfunction(2,3)&}]
按照按钮定义格式设置extendButtons标签的属性值,即可将按钮显示到工具栏。
外观及属性控制
方便用户对工具栏的外观及属性进行自定义的修改,预留了一些class。通过调用这些预留的class可以实现对整个工具栏、工具栏的指定区域、按钮的外观及属性控制。工具栏具体划分及各部分对应的class如下表所示:
将对工具栏自定义的相关代码保存至JS文件中
在VR或SR中引用JS文件
注意:修改VR样式等内容的js需要加入到$(document).ready(function(){})的方法中,才能正常控制VR生成的各个对象
部分示例代码
1.将导出Excel按钮禁用
$(&.vrExportExcelButton&).attr(&disabled&,true);
2.将导出Word按钮隐藏
$(&.vrExportWordButton&).css(&display&,&none&);
3.将导出pdf按钮转移到其它按钮区
$(&.vrExportPdfButton&).appendTo($(&.otherButtonArea&));
4.修改整个工具栏的背景色为蓝色、高度为50px
$(&.toolbarClass&).css({&background&:&blue&,&height&:&50&});
VR中调用方法:在JSP中引入按钮修改的JS 文件。如:
&script type=&text/javascript& src=&&%=request.getContextPath() %&/js/test.js&&&/script&
SR调用方法:设置jsFiles参数的值为JS文件路径及名称。如:
jsFiles=/js/test.js
当客户需要将报表系统集成至业务系统中时,希望将报表打印、导出等功能加入到业务系统工具栏中或者重新定义一个工具栏来进行报表打印、导出等操作时,可以通过调用报表打印、导出、翻页等功能的JS方法来实现。
各功能具体的JS及调用方法说明如下:
使用&对象名.name_function()&的格式进行调用
对象名:报表组和普通报表的对象名是不相同,普通报表的默认对象名为rptObj,报表组的默认对象名为:groupObj。
name:为标签中定义的name属性的值,例如:report1。
function():为具体的方法名。
单个报表的功能按钮对应的JS调用方法如下:
rptObj_report1.print()
rptObj_report1.directPrint()
rptObj_report1.saveAsText()
rptObj_report1.saveAsExcel()
rptObj_report1.saveAsWord()
rptObj_report1.saveAsPdf()
rptObj_report1.submit()
rptObj_report1.appendRow()
rptObj_report1.insertRow()
rptObj_report1.deleteRow()
rptObj_report1.importExcel()
rptObj_report1.getPage(pageNum)
rptObj_report1.getPageNum()
报表组功能按钮对应的JS调用方法如下:
groupObj_report1.print()
groupObj_report1.saveAsText()
groupObj_report1.saveAsExcel()
groupObj_report1.saveAsWord()
groupObj_report1.saveAsPdf()
groupObj_report1.submit()
groupObj_report1.appendRow()
groupObj_report1.insertRow()
groupObj_report1.deleteRow()
groupObj_report1.importExcel()
隐藏VR默认工具栏,定义一个包含打印和导出excel按钮并实现翻页功能的工具栏,工具栏按钮使用自定义图标。
&%@ taglib prefix=&view& uri=&/WEB-INF/tld/viewReport.tld&%&&html& &% String appmap = request.getContextPath();String excelImage = &&img src='& + appmap + &/images/excel.png' border=no &&;String nextImage = &&img src='& + appmap + &/images/next.png' border=no &&;String lastImage = &&img src='& + appmap + &/images/last.png' border=no &&;String preImage = &&img src='& + appmap + &/images/pre.png' border=no &&;String firstImage = &&img src='& + appmap + &/images/first.png' border=no &&;%&&span onclick=&rptObj_report1.saveAsExcel()&&&%=excelImage%&&/span&&span onclick=&rptObj_report1.getPage(1)&&&%=firstImage%&&/span&&span onclick=&getPrePageNew()&&&%=preImage%&&/span&&span onclick=&getNextPageNew()&&&%=nextImage%&&/span&&span onclick=&rptObj_report1.getPage(rptObj_report1.getPageCount())&&&%=lastImage%&&/span&&view:report name=&report1& srcType=&file& fileName=&/vrdemo/report.raq& toolbarLocation=&none&needPage=&yes& needPageMark=&yes&width=&600&height=&60&/&&script language=&JavaScript& type=&text/javascript&& function getPrePageNew(){
if(rptObj_report1.getPageNum()-1&1){rptObj_report1.getPage(1);}elserptObj_report1.getPage(rptObj_report1.getPageNum()-1); }&/script& &script language=&JavaScript& type=&text/javascript&&function getNextPageNew(){
if(rptObj_report1.getPageNum()+1&rptObj_report1.getPageCount()){rptObj_report1.getPage(rptObj_report1.getPageCount());}elserptObj_report1.getPage(rptObj_report1.getPageNum()+1); } &/script&&/html&
功能及用途
VR监听类主要用于系统执行报表计算前、报表计算后分页前、报表分页后展现前、报表导出前进行业务处理的类,用户可以自行实现VR监听类,从而在报表计算前、报表计算后分页前、报表分页后展现前、报表导出前实现自己的业务处理。监听类的作用对象与报表运算过程的关系如下图所示
监听器类中可以使用session对象、request对象、response对象、报表运行环境对象、报表计算前后报表对象,因此可以检查用户登录信息、操作权限及其他信息,并可以在报表计算前后、分页后、导出前对报表对象进行操作。
注意:只有报表计算前监听接口BeforeCalc()能获取到response对象,其它3个方法只能获取到session和request对象。获取方法如下:
获取session对象的方法
HttpSession session=(HttpSession)params.get(&session&);String id=session.getAttribute(&sys_UserID&).toString();
获取request中参数的方法
HttpServletRequest request=(HttpServletRequest)params.get(&request&);String nme=request.getAttribute(&name&).toString();
使用VR监听类对报表进行处理时,无需传递报表名称等信息,直接从接口参数中获取展现报表对象进行处理即可。因此VR监听接口既可以实现对所有报表的批量操作处理,也能够仅对某些报表资源进行业务逻辑处理。且同一个实现类中可以同时调用多个方法对对报表对象进行处理。
接口类说明
VR监听类必须继承润乾报表提供的监听抽象类: com.runqianapp.view.listener.ViewReportListener
该类有几两个重要的变量:
com.runqian.report4.usermodel.C为计算报表时上下文环境。Context是一个环境类,在这个类里可以获取或者设置数据源、参数与宏值、报表主路径等。
com.runqian.report4.usermodel.IR//报表对象。通过该对象可以获取和设置报表属性、单元格属性。
通过报表运算环境对象和报表对象,可以获取和设置数据源、参数、宏值、报表主路径、报表属性、单元格属性等。具体API接口请参见:
context用法举例
其中ir为IReport报表对象,ctx为context报表计算式环境对象。
参数值传递
ParamMetaData pmd = ir.getParamMetaData(); //从报表对象中取得参数元对象ParamMetaDataif(pmd != null){for(int i = 0, count = pmd.getParamCount(); i & i ++ ) { String paramName = pmd.getParam(i).getParamName(); //获取参数名 cxt.setParamValue(paramName, request.getParameter(paramName)); //设参数值}}
MacroMetaData mmd = ir.getMacroMetaData(); //从报表对象ir中取得宏的元对象MacroMetaDataif( mmd != null ){for(int i = 0; i & mmd.getMacroCount(); i ++){String MocrName = mmd.getMacro(i).getMacroName(); //获取宏名cxt.setMacroValue(MocrName,request.getParameter(MocrName)); //设置宏值}}
改变数据源连接
传递con,改变数据源连接
String defDsName = cxt.getDefDataSourceName ();//获取默认数据源连接cxt.setConnection(defDsName, con); //设定默认数据源
cxt.setConnection(&dsName&,con); //直接指定某个已有的数据源,设置其con
指定另一个系统数据源名称,从而改变数据源连接
cxt.setDefDataSourceName(&demo&); //改变缺省数据源名称
通过数据源工厂改变数据源连接
IConnectionFactory connFactory=......; //构造数据源工厂类,一般为自定义类cxt.setConnectionFactory(sourceName,connFactory);
获取报表文件路径及名称
String appPath = PathUtils.getAppPhyPath().toString(); //应用绝对路径,如:“E:/产品应用及数据库/GEEZNV5.0/tomcat/webapps/reportmis&String reportPath = ctx.getParamValue(&vr_raqFilePath&).toString();//报表文件相对于应用的相对路径及文件名称。
实现VR监听类后将编译后的类文件存放至WEB-INF/classes/【包路径】下。例如:WEB-INF/classes/com/runqianapp/view/test.class
为监听类标签viewReportListener指定一个JAVA实现类名。例如:viewReportListener=&com.runqianapp.view.test&
在报表展现时不同的报表既可以调用不同的实现类,对报表进行不同的处理。也可以调用同一个实现类对报表进行相同的处理。取决于为不同的报表配置实现类名是否一致。
注意:该监听接口只能在view:report和view:input标签中使用,view:html和view:group标签不支持。
报表计算前监听接口BeforeCalc(),用于在报表计算前进行自己的业务处理,或者根据需要对报表模板进行修改。例如动态改变报表的数据源连接、增加删除修改报表参数和宏、修改报表属性、修改单元格属性等。
BeforeCalc(IReport ir,Context ctx,Map&String,Object& params)
IReport 报表模版对象
Context 报表计算引擎环境对象
Map&String,Object&params session、request、response对象
处理后的报表模版对象
修改模板A1单元格的值为当前登录用户的ID
public class VRListenerTest1 extends ViewReportListener { public IReport BeforeCalc(IReport ir,Context ctx,Map&String,Object& params){try{HttpSession session=(HttpSession)params.get(&session&);String id=session.getAttribute(&sys_UserID&).toString(); INormalCell cell = ir.getCell(1, (short) (1));cell.setValue(id);}catch(Exception e){e.printStackTrace();}}}
计算后分页前
报表计算后监听接口AfterCalc(),用于在报表计算后、分页前进行自己的业务处理,或者根据需要对分页前的报表运算结果进行修改。例如对运算结果中内容相同的相邻单元格进行合并,实现动态合并单元格。
AfterCalc(IReport ir,Context ctx,Map&String,Object& params)
IReport 计算后的报表对象
Context 报表计算引擎环境对象
Map&String,Object& 保存有session、request对象的参数组
处理后的的报表对象
将运算后的报表结果中第一个单元格的内容修改为“A”
public class VRListenerTest2 extends ViewReportListener { public IReport AfterCalc(IReport ir,Context ctx,Map&String,Object& params){ ir.getCell(1, (short)1).setValue(&A&);
报表结果分页后接口AfterPaging(),用于在报表结果分页后展现前进行自己的业务处理,或者根据需要对分页后IReport组进行修改。
AfterPaging(IReport[] irs,Context ctx,Map&String,Object& params)
IReport[] 分页后的IReport对象组
Context 报表运算引擎环境对象
Map&String,Object& 保存有session、request对象的参数组
分页后的IRerport对象组
将分页后的报表结果第二页的页码由“2”修改为“二”
public class VRListenerTest3 extends ViewReportListener {public IReport[] AfterPaging(IReport[] irs,Context ctx,Map&String,Object& params){INormalCell imc=irs[1].getCell(9, (short)1);imc.setValue(&二&);}}
打印打出前
报表结果打印、导出前监听接口BeforeExport(),用于在报表展现后、打印导出前进行自己的业务处理,实现展现与导出、打印结果不一样的需求。例如导出excel时生成目录页。
BeforeExport(IReport ir,Context ctx,Map&String,Object& params)
IReport 计算后的报表结果对象
Context 报表计算引擎环境对象
Map&String,Object& 保存有session、request对象的参数组
计算后的报表对象
在导出文件第一个单元格的内容设置为“导出前新增内容”
public class VRListenerTest4 extends ViewReportListener {public IReport BeforeExport(IReport ir,Context ctx,Map&String,Object& params){ir.getCell(1, (short)1).setValue(&导出前新增内容&);}}
当客户希望使用VR展现报表过程中时某些操作触发自定义的js事件,可以通过添加VR事件来实现。
客户添加VR事件,添加的事件方法会在对应时候触发。
VR中JS事件调用方法及详细说明如下:
VR展现时,传递参数jsFiles=js文件名
在js文件中使用“rptObj_report1.bind('事件名称', 方法名称,this)”的格式对报表js事件进行调用
在js文件中使用“groupObj_report1.bind('事件名称', 方法名称,this)”的格式对报表组js事件进行调用
事件名称:报表组和普通报表的事件名称是不相同的,触发条件也不同,具体的事件名称会在下面详细说明。
方法名称:为标签中定义的js方法名,例如:test1。
计算报表后触发
得到当前页html代码后触发
报表提交完成时触发
计算sheet页之后触发
getSheetHTML
得到当前页html代码后触发
groupSubmit
报表组提交完成时触发
报表组sheet标签生成后,展现第一个sheet之前触发
在报表得到当前页html代码后触发test1.js中的callBack_loadSuccess方法
rptObj_report1.bind('getPage', callBack_loadSuccess, this);
在报表组得到当前页html代码后触发test1.js中的callBack_loadSuccess方法
groupObj_report1.bind(&getSheetHTML&, callBack_loadSuccess, this);
SR中集成了VR及大数据量报表分页取数展现的标签,它主要由showReport1.jsp和showReport_reportFrame.jsp组成,JSP路径为:..\mis2\reportcenter。
由于SR集成了VR,因此VR中适用的功能大部分支持在SR中使用。如VR标签、工具栏自定义方法及VR监听类。
showReport1.jsp
showReport1.jsp的主要功能包括:判断报表是否包含通用查询或参数模版,如果有则展现相应的通用查询或报表模块,根据读取到的报表判断报表类型,将得到的报表类型等信息传递给showReport_reportFrame.jsp进行报表展现。
用户对报表展现页面有自定义需求时,可以通过修改showReport1.jsp来实现客户化的报表展现页面。例如对展现页面样式的修改,在展现页面增加一些自己的内容。当需要对showReport1.jsp进行修改时,请将系统自带的JSP保留,另存后进行修改,不要直接对showReport1.jsp进行修改。以免产品更新时,覆盖自定义修改的内容。
showReport_reportFrame.jsp
showReport_reportFrame.jsp的功能包括:根据报表类型选择标签进行报表展现。
注意:一般情况下不建议修改showReport_reportFrame.jsp。如果有需要对此JSP进行修改的情况,请联系技术支持人员。由润乾根据具体需求对产品进行更改。需要在JSP中定义自动计算或校验用到的JS函数时,可以JS函数定义到JS文件中,在报表展现时通过jsFiles参数引用对应的JS文件即可。
SR中展现报表资源可以通过资源ID和文件名称两种调用方式来进行报表展现。
资源ID为新建报表资源时自动生成的用于唯一标识报表资源的一个ID。使用资源ID进行报表展现时,无需设置报表路径及名称即可进行报表的展现。
http://localhost:8800/reportmis/mis2/reportcenter/showReport1.jsp?resID=11801
使用文件名称进行报表展现时,既需要传递报表名称,还需要传递报表的路径。路径既可以是相对路径,也可以是绝对路径。传递相对路径时,是相对于【控制台】-【服务器参数管理】中配置的“报表根目录”。
SR可以通过展现参数和模式来控制报表展现的效果,并且可以两种方式混合使用,即在使用模式和参数共同控制展现效果。
如前面所说VR将报表展现的特性都封装为标签,通过控制标签属性值即可控制报表展现效果。SR本身包含一部分展现控制的参数,并且将VR报表展现的标签通过参数来进行控制。在URL或展现设置页面直接设置对应参数的值,即可控制报表展现效果。
实际应用中,展现报表时所需要设置的参数往往比较多,导致URL过长使用不方便,且参数都显示在URL中容易造成安全隐患。为了解决这一系列问题,SR提供了模式的方式来控制报表展现效果。可以将一组报表展现参数的属性和值保存为一个模式,在报表展现时,直接调用模式来控制报表展现效果。
使用SR进行报表展现时,可以通过参数来控制展现的报表资源、通用查询面板显示、展现效果等。展现参数分为两类,一类是SR本身特有的参数。一类是在VR标签中定义并实现的标签属性。
SR本身特有的参数主要用于对报表调用和部分展现的控制。使用资源ID进行报表调用时resID或sys_fid必需设置;使用文件名称进行报表展现时raq或rpg参数必需设置;其它参数为非必需参数。SR特有参数及其具体说明如下:
报表调用相关参数
resID或sys_fid
资源ID:新建报表资源时生成的一个ID,可以通过该ID找到报表资源的路径、文件名等信息用于报表展现。
资源类型:不同的资源类型的标识。类型为数字,具体资源及其对应的编号如下:
复杂报表 18
通用查询 10008
手机报表 10009
报表组 10010
自定义jsp 21
统计报表 4
简单填报表 8
行式填报表 16
填报表组 32
统计报表组 64
自由格式报表 128
分组报表 12
自由报表 13
交叉报表 14
组合报表 17
Dashboard模板 9
Dashboard面板 10
Dashboard组件 11
资源名称:在资源中心下显示的名称,还用于展现页面默认的标题名称。
serverPath
V5报表文件路径,展现时不指定此路径,则根据资源ID从数据库中查询得到。指定后使用指定的报表文件路径。不从数据库中进行查询。
报表文件或报表组文件路径及名称:使用文件名称进行报表调用时必须设置的参数,包含路径的文件名称。具体参见。
encodeAllParam
是否对所有参数解密展现:参数值为yes或no,为yes时,对所有参数进行解密后展现,为no时不对参数进行解密,默认值为no。具体参见。
encodeParamName
需要进行解密的参数名:值为需要解密的参数名称,多个参数名之间用逗号分隔。具体参见
单独模块调用时为 alone,是否似乎单独调用取决于misIniConfig.xml中conf_appType 属性,1为平台,0为单独调用。
展现控制参数
页面标题:报表展现页面标题,不设置时默认显示为resName的值。可以通过该参数手动设置该值。
showGraphOnly
是否只显示统计图:不设置时默认为yes
autoDisplay
是否自动显示报表:不设置时默认为0。0:自动显示报表,1:不自动显示报表,2:有通用查询时不自动显示报表
数据量临界值:不设置时默认为10000。报表数据量超过该值则使用big标签展现(指定了vrType=big,直接用big展现,不指定vrType的话,就根据cellsNum自动判断)
exportPageCount
数据分析类报表导出行数:不设置时默认为5000
paddingLeft
报表展现页面左边距:整数,单位为px,整数表示右移,负数表示左移。默认为15px,即右移15个像素。例如:paddingLeft=20
paddingTop
报表展现页面上边距:整数,单位为px,整数表示下移,负数表示上移。默认为5px,即下移5个像素。例如:paddingTop=20
autoRefresh
是否自动刷新:整数,不设置时默认为yes(默认30秒)
conf_showReportClass
报表展现类:在平台中进行报表展现与不结合平台使用时单独调用SR进行报表展现时,需要设置不同的展现类。来实现展现时不同的逻辑处理。
与平台结合使用时,设置conf_showReportClass为com_runqianapp_showReport_ShowReportGEZ后面简称GEZ类;不与平台结合单独调用SR进行报表展现时需设置conf_showReportClass为com_runqianapp_showReport_ShowReportVR后面简称VR类。
在misInitConfig.xml中可以配置该参数的默认值,配置代码如下:
&conf_showReportClass dataType=&11& defalut=&com.runqianapp.showReport.ShowReportGEZ& inputType=&text& value=&com.runqianapp.showReport.ShowReportGEZ& /&
两种方式的主要区别:
GEZ类进行报表展现时,可以使用resID和文件名称来调用报表进行展现;VR类展现时由于不依赖系统数据库,所以不能使用resID进行调用。
GEZ类进行报表展现时,既可以使用数据管理中定义的数据源、数据集进行取数,可以使用连接池的方式进行取数展现,如果数据管理与数据库连接池中配置了同名数据源,展现时使用数据管理中定义的数据源;VR类不能使用数据管理中定义的数据源、数据集,只能使用数据库连接池和reportConfig.xml中配置的数据源进行取数。
GEZ类进行报表展现时,可以使用变量管理中定义的变量。VR类不能使用。
模式ID:报表展现时使用的的模式ID,具体参见:
allowedFormatAdjust
是否导入排序和换列的JS:不设置时默认为colheadsort|colheaddrag。colheadsort:排序 ;colheaddrag:换列 ;都要引入的话中间用 | 分隔
客户化控制参数
报表展现标签类型:用于手动指定报表使用哪个标签库文件来进行报表展现。不设置时默认自动根据报表类进行判断选择标签展现,可以手动设为viewReport和html。值为viewReport时,使用viewReport.tld中的标签进行展现;值为html时使用runqianReport4.tld中的标签进行展现。
具体的标签种类:用于手动指定报表具体使用哪组标签进行报表展现。不设置时默认自动根据报表类进行判断选择标签展现。与showType参数结合使用,showType为viewReport时,取值为report,input,html,group;showType为html时取值为html,group,big。
报表样式文件名称:报表展现页面样式控制的样式文件名称,以及报表中全局样式使用的样式文件名称。使用该参数可以实现页面样式切换,达到动态换肤的效果。当需要设置多个样式文件时以分号分隔。如:cssFiles=test1.test2.css。
js文件的引用,存储展现页面中使用到的JS方法的文件名称。可以配置多个文件,以分号分隔。
srCssFiles
SR引入CSS文件组:复杂、报表组、分组、交叉 SR页面引入的css文件,可以配置多个文件,以分号分隔
SR引入JS文件组:复杂、报表组、分组、交叉 SR页面引入的JS文件,可以配置多个文件,以分号分隔
reportParamsId
参数池ID:复杂、报表组、v4 报表查询时会将参数名和参数值存放到参数池中,这些参数对应一个参数ID;通过参数ID可以取到报表对应参数值
showReportListener
SR实现类类名:调用SR监听类进行业务逻辑处理上,通过配置该参数进行实现类的调用。具体参见:
通用查询参数
btnDisTime
查询按钮禁用时间:不设置时默认为30。复杂、报表组、分组、交叉 点击查询按钮之后按钮不可用,btnDisTime秒之后按钮出现,用于防止数据量过大报表未加载完成多次重复发出报表请求
hasQrPanle
是否隐藏查询面板:不设置时默认为no。DBD特有参数 DBD参数,DBD中展现时需要收起查询面板
hiddenReportAfterShow
报表展现后是否收起通用查询面板:不设置时默认为no。
configProcessor
通用查询预处理类:不设置时默认为no。
hasCommQry
是否有通用查询:不设置时默认为yes。yes:有 no:没有
commonQueryLocation
通用查询面板位置:不设置时默认为top。top:上端; bottom:底端; left:左端; right:右端
commonQueryPath
通用查询文件路径。通用查询json文件所在路径。
commonQueryJson
通用查询结果json:json串,配置该结果串后可以直接查询出报表结果(不展现查询面板和条件值的设定)。
defaultPackupQryPanel
用于控制首次预览带参数表单或通用查询的报表时,是否显示通用查询面板和参数表单
V4兼容参数
paramProcessor
参数表单监听类:不设置时默认为No。V4参数表单特有参数
是否显示参数表单:不设置时默认为TRUE。仅适用于含参数表单的V4报表
参数表单文件名:V4参数报表 指定V4参数模板文件,此路径为相对于reportConfig.xml中reportFileHome的路径。
formFilePath
自定义查询form的jsp文件:自定义查询jsp页面的文件路径,相对路径,相对于应用根目录(reportmis)
标签参数为在标签库文件中定义并实现的标签,在SR中可以通过参数传递来控制标签的属性值。SR标签参数中默认只包含了部分常用标签,如需对其它不常用标签属性值进行设置,请联系技术支持人员,添加所需标签参数。
可以通过参数来控制的标签包括:
标签参数-展现参数
报表分页宽度:整数,单位为px,负数表示无穷大,不设置时默认为0。
报表分页高度:整数,单位为px,负数表示无穷大,不设置时默认为0。
reportAreaWidth
报表展现区域宽度:不设置时默认为0。整数,象素值.或者百分数,如80%
reportAreaHeight
展现报表区域高度:不设置时默认为0。整数,象素值.或者百分数,如80%
报表缩放比例: 实数,不设置时默认为1
isCollReport
是否是折叠报表:不设置时默认为 no
collReportType
折叠报表类型:不设置时默认为 0。 0:不定层级;1:树形;2:多个报表
报表组异步加载:不设置时默认为 yes
needScroll
是否锁定表头:不设置时默认为yes。
是否可以拖拽报表单元格宽高:不设置时默认为no
reportAlign
报表位置对齐:不设置时默认为left。包含属性left、right、top 、middle 、bottom
报表组settings属性 :格式:{sheets:{sheet1:{inputListener:\&com.runqian.xxx\&,needPage:\&yes\&},sheet2:{needPageMark:\&no\&}}}
可设置属性值: inputListener、viewReportListener、extendButtons、needPage、needScroll、width、height、scrollWidth、scrollHeight、scrollBorder、needLinkStyle、needPageMark 其中前三个如果没有定义的话,就为空值,后面的9个属性如果没有在settings里定义的话,就沿用报表组标签中设置的属性值
标签参数-工具栏参数
toolbarLocation
工具条位置:不设置时默认为top。top:上端 bottom:底端 none:无工具条
extendButtons
自定义按钮:工具栏添加按钮
是否需要导出debug按钮:不设置时默认为no
needPageMark
是否需要分页按钮:不设置时默认为yes
是否需要分页:不设置时默认为yes
needImportExcel
是否需要导入excel:不设置时默认为yes
needSubscribe
是否显示订阅按钮:不设置时默认为yes
是否需要打印按钮:不设置时默认为no
flashPrint
是否使用flash打印:不设置时默认为yes
needDirectPrint
是否需要直接打印按钮:不设置时默认为no
needSaveAsExcel
是否需要导出Excel按钮:不设置时默认为yes
needSaveAsPdf
是否需要导出Pdf按钮:不设置时默认为yes
needSaveAsWord
是否需要导出Word按钮:不设置时默认为yes
needSaveRemote
是否需要远程导出按钮:不设置时默认为yes
needSaveAsCsv
是否需要导出csv按钮:不设置时默认为yes
needSaveAsText
是否需要导出Txt按钮:不设置时默认为yes
标签参数-导出打印参数
excelPageStyle
存为Excel时的分页方式,不指定此属性值,则系统弹出对话框让用户选否1复杂、报表组0(不分页)或1(分页)
isNeedFormula
导出excel是否导出公式:不设置时默认为0。0不导出、1导出
导出excel时显示比例属性:不设置时默认为100
excelFormat
导出excel的格式:不设置时默认为2003
wordFormat
导出word的格式:不设置时默认为2003
pdfExportStyle
存为PDF时,导出的文件分页方式及导出类型,导出类型分为图形方式及text方式。否text,0复杂、报表组属性值格式为: &文件类型,是否分页&.文件类型取值为:graph: 将文字导出为图形方式.text:将文字导出为文本方式.1表示要分页,0表示不分页
appletJarName
报表打印的applet文件名:不设置时默认为runqianReport4Applet.jar、dmGraphApplet.jar、appletPatch.jar、flex-messaging-core-2.0.jar
needShowExportDialog
是否弹出分页选择框:不设置时默认为yes
标签参数-分页标签参数(big特有)
totalCountExp
总记录数:Big标签特有润乾的非数据集函数,并且返回的值应该是一个整型数据。如用query执行一个count的sql
每页记录数,分页后每一页包含的记录数:不设置时默认为10。Big标签,分组整数
cachePageNum
缓存页数:不设置时默认为5。Big标签特有整数
是否使用自动分页:不设置时默认为yes。Big标签特有
exportExcelOneSheet
是否导出到excel的一个sheet页:不设置时默认为no。Big标签特有
countPerExportPage
导出时每次取数的条数:整数,不设置时默认为10。Big标签特有
标签参数-填报参数
是否使用填报数据主键控制功能:不设置时默认为no
backAndRefresh
填报完成后是否刷新报表:不设置时默认为yes
submitTarget
填报完成后刷新方式:不设置时默认为_self
promptAfterSave
提交后是否弹出确认框:不设置时默认为yes
promptBeforeUnload
离开页面时提示提交数据:不设置时默认为no
validOnShow
展现填报表时是否校验数据有效性:不设置时默认为no
validOnSubmit
提交填报时是否校验数据有效性:不设置时默认为yes
importExcelAppend
导入excel时是否新加行:不设置时默认为yes
submitAsync
控制提交数据的ajax请求是异步还是同步,并根据该值返回提交成功与否的标志。不设置时默认为true,不返回标志。
设置为false时:请求为同步方式,调用rptObj_report1.submit()方法,返回是否填报成功。适用于开发者自行调用该方法提交并处理提交未成功的情况。
设置为true时:请求为异步方式,调用rptObj_report1.submit()方法,不会返回是否填报成功。填报如失败,则会异步跳转到inputExceptionPage页面(inputExceptionPage是vr的一个标签属性,可以设置一个jsp页面;如果不设置会提示提交数据失败)。&&&&
标签参数-客户化参数
异常信息的显示页面:不设置时默认为/mis2/error.jsp
inputListener
填报监听类
showPageCallBack
展现回调函数
viewReportListener
功能与用途
模式是为了简化报表展现URL,减少标签参数输入与设置所提供的一种展现设置方法。在实际应用中,可以将一组标签及其属性值保存为一个模式。在报表展现时,直接调用模式来进行报表展现。
在使用模式进行展现控制的基础上还能够通过标签来进行控制。下面举例说明模式的作用及使用方法。
平台中有一部分大数据量报表,达到百万、千万甚至更大的数据量。在对这类报表进行展现时,需要使用分页计算标签来快速展现。
分页取数计算标签需要设置的标签属性不止一个,这时为了方便调用进展现可以进行如下设置:
将分页计算标签的标签属性:showType=html;vrType=big;autoMode=yes;totalCountExp=200000;pageCount=50;cachePageNum=40;cellsNum=0保存为模式1001。
在需要展现此类大数据量报表时,只需要调用模式1001,即可快速展现大数据量报表。而无需设置众多标签属性值。当需要修改或添加其中某个属性值时,只需要在模式的基础上设置其它标签属性的值即可。如:...&schemaId=1001&autoMode=no。
模式使用时,先将一组属性保存为模式,创建的模式都被存储在模式池(com.runqianapp.common.schema.SchemaPool)中,可通过该对象的getSchema方法取得对应的模式属性。
完全相同的属性组,在模式池中只保存一份。
在进行模式调用时,直接使用schemaId作为模式ID的参数名进行调用即可,模式的调用方法如下:
// 获取schemaId参数String schemaId = request.getParameter(&schemaId&);// 从模式池中获取对应的模式SchemaDefine schema = SchemaPool.getSchema(schemaId);
引入属性模式的js库
&script type=&text/javascript& src=&&%=contextPath%&/commonServlet?gezTarget=Schema&action=load_js&&&/script&
调用SchemaUtils方法生成一个带临时模式的url
var url = SchemaUtils.make('demo.jsp',{'showType':'html','vrType':'big','autoMode':'yes','totalCountExp':'200000','pageCount':'50','cachePageNum':'40'});
使用SR进行报表展现时,可以通过全局展现配置、资源展现设置及URL来进行展现参数、模式值的设置。由于报表展现标签数量较多,以上3种方式都仅能设置部分常用参数、模式或标签属性的值。具体可以设置的项参见:。其它不常用标签介绍参见:
全局展现设置
在首页菜单【报表】-【全局展现配置】中进行设置。通过此页面进行的设置,对系统中展现的所有报表都生效。
该功能模块为报表展现的参数提供友好的配置界面,该页面可配置的参数有:是否可调整列宽,报表显示位置,打印方式,导出excel的方式,工具栏按钮的选择,远程导出路径。给配置项的含义及使用说明参见:。配置页面未包含的项可以根据需要进行添加,具体包含的标签参见:
&&&&&目前已经保证常用参数都已经包括在全局展现设置界面,用户可以根据自己的使用情况进行设置。
资源展现设置
在【资源中心】下,报表资源显示项中包含一个【展现设置】的按钮。点击即可设置该报表资源的展现参数、标签和展现所用模式。
资源展现配置优先级高于全局展现配置,即在全局展现配置和资源展现配置中同时配置了某个展现属性时,以资源展现设置中的设置为准。
此页面仅包含部分常用设置项,如需设置其它展现属性可在全局展现设置中的更多配置项,可以通过自己配置JS文件来自行添加需要的项,配置文件位置为:
mis2\proconsole\setGlobalshow\js目录下的onlyparam.js。
以[&autoRefresh&,&自动刷新&]的形式,对应标签以及相应的中文名称,添加到onlyparam.js文件中的var d1中。
URL中进行设置
报表展现的属性还可以通过URL来进行设置,直接在URL后加上要设置的参数名及参数值即可。能通过URL进行设置的参数仅包含章节提到的参数和模式。设置方法参见:
URL安全传递
通常情况下我们可以使用J2EE本身的请求转发机制,通过RequestDispatcher.forward方法来进行请求转发,从而避免URL泄露造成的安全隐患。但是请求转发只能转发给同一个Web应用中的组件,仅适用于同一个应用内部的URL转发。
对于不同应用间的URL安全传递。润乾的提供了URL加密传递的方式。可以对参数加密后再进行传递。在报表展现时再对URL中参数进行解密。
前面介绍了请求转发与URL加解密机制的作用及适用情况,下面给出一段请求转发的示例代码作为参考:
根据登录用户进行权限判断,并使用请求转发的方式进行URL重定向。
代码如下:
public class ReportServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 获取要访问的资源IDString reportId = req.getParameter(&id&);// 获取要进行的动作(编辑/查看/删除 等...)String action = req.getParameter(&action&);// 从session中获取用户信息String userId = (String) req.getSession().getAttribute(&userId&);// 准备跳转到对应链接String url = &&;try {if(checkPrivilege(reportId, userId, action)) {url = getRealUrl(reportId, action);if(url == null) {throw new RuntimeException(&找不到对应操作!&);}} else {throw new RuntimeException(&无权进行该操作!&);}} catch (RuntimeException e) {req.setAttribute(&errorMessage&, e.getMessage());url = &error.jsp&;} // 使用请求重定向的方式跳转到对应链接req.getRequestDispatcher(url).forward(req, resp);}/*** 进行权限判断* * @param reportId 报表ID* @param userId 用户ID* @param action 动作* @return*/private boolean checkPrivilege(String reportId, String userId, String action) {if(userId == null)boolean result =if(userId.equals(&user1&)) {// user1只具有查看的权限result = &show&.equals(action);} else if(userId.equals(&user2&)) {// user2具有查看和编辑的权限result =}}/*** 获取操作报表的真实链接地址* * @param reportId* @param action* @return*/private String getRealUrl(String reportId, String action) {String url =if(&show&.equals(action)) {url = &report/show.jsp&; } else if(&edit&.equals(action)) {url = &report/edit.jsp&;}}}
对于不同应用间的URL安全传递。润乾提供了URL加密传递的方式,可以对参数加密后再进行传递,也可以在报表展现时再对URL中参数进行解密。
对URL进行加解密时,既可以选择对URL中所有参数进行加解密,也可以只对部分参数进行加解密。
平台中报表展现时,默认会对报表名称、报表路径、资源名称进行加解密展现。
JS中加密方法
在JSP中引用Base64.js
调用bases64方法对URL中所有参数值进行加密
传递加密后的URL
示例代码如下:
&script type=&text/javascript& src=&&%=request.getContextPath() %&/mis2/gezComponents/jsUtils/Base64.js&&&/script&&script language=&javascript&&function show_Report(){var base64 = new Base64();var fid= base64.encode(&10052&);var fname= &5ZCE5Zyw5a6i5oi36ZSA5ZSu5oOF5Ya157uf6K6h6KGo&;var type=base64.encode(&18&); window.open(&http://192.168.0.107:8800/reportmis/mis2/reportcenter/showReport1.jsp?resID=&+fid+&&resType=&+type+&&resName=&+fname+&&resIdForTab=&+fid);}
对URL进行加解密时,既可以选择对URL中所有参数进行加解密,也可以只对部分参数进行加解密。对参数加解密时有部分参数比较特殊:
使用conf_showReportClass为com_runqianapp_showReport_ShowReportGEZ进行展现时,默认会对报表名称、报表路径、资源名称进行加解密展现。 而使用conf_showReportClass为com_runqianapp_showReport_ShowReportVR进行展现时默认不对任何参数进行加解密展现
对所有参数进行加解密展现时,有三个特殊参数,由于是在报表URL解密前进行调用,所以不能对它们进行加密:conf_showReportClass、schemaId和resID。
JS中加密方法
在JSP中引用Base64.js
调用bases64方法对URL中所有参数值进行加密
传递加密后的URL
示例代码如下:
&script type=&text/javascript& src=&&%=request.getContextPath() %&/mis2/gezComponents/jsUtils/Base64.js&&&/script&&script language=&javascript&&function show_Report(){var base64 = new Base64();var fid= base64.encode(&10052&);var fname= &5ZCE5Zyw5a6i5oi36ZSA5ZSu5oOF5Ya157uf6K6h6KGo&;var type=base64.encode(&18&); window.open(&http://192.168.0.107:8800/reportmis/mis2/reportcenter/showReport1.jsp?resID=&+fid+&&resType=&+type+&&resName=&+fname+&&resIdForTab=&+fid);}&/script&
报表中加密方法
使用encode()函数进行加密,加密的内容既可以是值,也可以是表达式。
例如:encode(demo_订单.货主地区)
对所有参数解密
当展现报表的URL中所有的参数都进行过加密时,可以通过设置encodeAllParam=yes来对所有参数进行解密,encodeAllParam默认为no,默认不对所有参数进行解密后展现。
http://localhost:8800/reportmis/mis2/reportcenter/showReport1.jsp?resID=&MTAwNTI,&resType=MTg,&resName=5ZCE5Zyw5a6i5oi36ZSA5ZSu5oOF5Ya157uf6K6h6KGo&resIdForTab=MTAwNTI,&encodeAllParam=yes
对指定参数解密
如果传递展现报表的URL时,只对其中部分参数进行了加密。那么在报表展现时需要指定,进行解密的参数名。设置格式为:encodeParamName=参数名,多个参数名之间用逗号分隔。
http://localhost:8800/reportmis/mis2/reportcenter/showReport1.jsp?resID=11697&resName=5Z_O5biC6K6i5Y2V6K_m57uG6KGo&serverPath=L21pczIvcmVwb3J0Y2VudGVyL3Jlcy9mbGV4ZGVzaWduZXIvcmVwb3J0RmlsZXMvMTE2OTcucmFx&resType=18&arg1=5piG5piO&encodeParamName=arg1&curmodel=complex&sys_docType=18
SR中除了可以使用VR提供的监听类接口,对计算前的报表对象、计算后分页前的报表结果对象、分页后的报表对象、打印导出前的报表结果对象进行处理外。还提供了一个SR特有的监听类接口showReportListener,该类需要继承com.runqianapp.showReport.listener.ShowReportListener类。其包含两个接口:fterGetShowReport和initShowReport。
其中: afterGetShowReport在sr对象生成后调用,可以对生成的ShowReport对象进行修改。
initShowReport在sr对象接收完参数后,生成sr对象前调用。可以对sr接收到的所有参数进行统一管理。
监听器类中可以使用session对象、request对象、报表运行环境对象、报表计算前后报表对象,因此可以检查用户登录信息、操作权限及其他信息,并可以通过调用该监听接口可以实现对报表展现参数、标签、模式的动态设置。
1.某报表系统只允许用户在工作时间(08:00-18:00)进行报表的打印和导出。非工作时间,用户登录系统后只能进行报表的查看,不能输出。
2.系统中的普通用户登陆正常显示当前报表,特定有权限的用户登陆显示特定报表。
public IShowReport initShowReport(IShowReport isr)
IShowReport 标签对象
处理后的标签对象
ShowReport afterGetShowReport(ShowReport showReport)
ShowReport 标签对象
处理后的标签对象
实现SR监听类后将编译后的类文件存放至WEB-INF/classes/【包路径】下。 例如:WEB-INF/classes/com.runqianapp.showReport.listener.Test.class。
为SR监听类参数showReportListener指定一个JAVA实现类名。例如:showReportListener=&com.runqianapp.showReport.listener.Test&。
1.系统时间为8:00-18:00时显示打印按钮,其它时间不显示打印按钮。
import com.runqianapp.showReport.IShowRimport com.runqianapp.showReport.domain.ShowRimport com.runqianapp.showReport.domain.ViewRimport java.text.ParseEimport java.text.SimpleDateFimport java.util.Dimport java.util.TimeZpublic class ShowLineReportListener extends ShowReportListener{public IShowReport initShowReport(IShowReport isr){}public ShowReport afterGetShowReport(ShowReport showReport){try{SimpleDateFormat df = new SimpleDateFormat(&HH:mm&);df.setTimeZone(TimeZone.getTimeZone(&Asia/Shanghai&));Date beginTime = df.parse(&8:00&);Date endTime = df.parse(&18:00&);String currentTimeString = df.format(new Date());Date currentTime = df.parse(currentTimeString);if ((currentTime.after(beginTime)) && (endTime.after(currentTime)))showReport.getViewReport().setNeedPrint(&yes&);elseshowReport.getViewReport().setNeedPrint(&no&);}catch (ParseException e) {e.printStackTrace();}return showR}}
2.系统中的普通用户登陆正常显示当前报表,root登陆显示特定报表
import java.util.Mimport javax.servlet.http.HttpServletRimport javax.servlet.http.HttpSimport com.runqianapp.showReport.IShowRimport com.runqianapp.showReport.domain.ShowRpublic class ShowLineReportListener extends ShowReportListener{@Overridepublic ShowReport afterGetShowReport(ShowReport showReport) {showReport.getViewReport().setNeedScroll(&yes&);return showR}@Overridepublic IShowReport initShowReport(IShowReport isr) {HttpSession session = (HttpSession)isr.getAttrs().get(&session&);String id = session.getAttribute(&sys_UserID&).toString();HttpServletRequest request = (HttpServletRequest)isr.getAttrs().get(&request&);if (id.equals(&root&)){isr.getAttrs().put(&res_server_path&, &/mis2/reportcenter/res/flexdesigner/reportFiles/11577.raq&);}}}
当客户希望使用SR展现报表过程中时某些操作触发自定义的JS事件,可以通过添加SR事件来实现。
客户添SR事件,添加的事件方法会在对应时候触发。
SR中JS事件调用方法及详细说明如下:
SR展现时,传递参数srJsFiles=js文件名
在js文件中使用“showReportObj.bind('事件名称', 方法名称,this);”的格式对报表js事件进行调用
事件名称:不相同的事件称其触发条件不同,具体的事件名称会在下面详细说明。
方法名称:为标签中定义的js方法名,例如:test1。
事件名称及对应触发条件:
点击查询按钮时触发
hideQueryPanel
隐藏查询面板时触发
showQueryPanel
查询面板显示出来后触发
loadReportFinish
报表展现完成时触发
resizeWindow
报表展现窗口大小改变时触发
在报表预览点击查询按钮时触发test1.js中的callBack_loadSuccess方法
showReportObj.bind('doQuery',callBack_loadSuccess, this);
推荐内容:
更多文章:}

我要回帖

更多关于 帆软报表 if 多个条件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信