用友U9-UBF自定义报表-打印模板开发学习笔记

自定义报表、打印模板开发学习笔记

一、基础了解

1、UBF开发工具的了解

Ideconfig.xml配置

True:打印、报表设计模式

False:单据设计模式

2、开发环境试用

BE:实体项目

BF:操作项目

SV:服务项目

分析项目:打印模板

报表应用项目:报表

二、简单设计报表

1、登录连接

(1)、登录UBF后,连接报表元数据库。

1个报表容器下只能存放1张报表。每新建1张报表,需新建1个报表容器。

(2)、增加数据源

选择"BusinessEntity"表示采用实体建立报表;

选择"StoredProcedure"表示采用存储过程建立报表;

选择"Text"表示采用SQL语句建立报表。

2、实体建立报表:

(1)、新建报表容器、报表

(2)、连接数据源

技巧:server name这个里面输入数据库服务器IP地址比点倒进行三角选择,速度快得多噢!

(3)、增加数据查询

(4)、选择实体(可以选择,也可以选择查找实体,使用查询实体会更快一点)

(5)、选择需要的字段

点击保存后字段即可出现在左边的"字段"栏目中。

将上面在BE中查询的字段选择显示到列表后,可以点击UBF自动的查询功能来预览数据,可以用UBF自带的工具翻译成SQL语句到MSSQL查询里面去查询。(OQL语句支持SQL语句的格式,可根据SQL语句格式自动编辑)如下图:

(6)、字段扩展属性

a、字段扩展属性说明

备选栏目:发布后在报表查询方案的栏目字段中显示在"待选项"列表中;

固定栏目:显示显示在"已选项"列表中;

默认栏目:系统默认显示在"已选项"列表中;

选择了"备选栏目"后,选择了"固定栏目"则此字段用户无法从"已选项"中移去(此字段为必选项);

选择了"备选栏目"后,选择了"默认栏目",则此字段会默认显示在"已选项"中,但用户可以自行移去此字段。

如果三个栏目都选择了,则与选择了"备选栏目"和"固定栏目"的效果相同。

b、行分组

(7)、建立查询条件

a、选择菜单上的"报表参数"建立查询条件。

在弹出的报表参数设置窗口中左边点击右击"添加条件项",在基本属性页签中点击fx,选择条件表达式。点击参照页签,选择该条件的相应字段。

允许为空:选择后,此查询条件可以不输入,不选择则为必输项。

是否可见:不出现此字段。

是否固定条件:此条件字段不可删除(一定要使用此字段),用户可以设置成无需输入,但根据实际情况这样无意思,设置成固定字段肯定是必输项。

选择绑定的字段!

b、参照

参照标签可以设置多种参照方法(根据相应的英文字母可知意思);

nothing:表示无

reference:可以调协参照值。

实际ID:选择参照的实体;

参照ID:选择一个类型样子的参照即可。(可理解为当作模型使用)

c、建立完查询条件后,到报表主页上"数据"页签中,修改数据查询。在查询参数页签上,点击"添加默认"按钮,确认退出。如不操作,查询条件将不起作用。

报表查询设置的结束如下图所示。

(8)、报表页面布局

根据用户想要实现的模样、拖动报表控制到右边的布局窗口,同样将字段根据用户想要的模样、顺序依次进行拖到表格中。用户可以利用右边的报表属性进行调整报表的样式。

(9)、技巧:BE实例查询可当数据字典使用

上述用BE实体建立报表,在平时做报表时这个功能用的非常少,现在我多半用这个功能来当数据字典来用。原因:

A、U9数据库更新频繁,但数据字典不能及时更新,有时会出现在数据字典中找不到字段的情况。

B、个人觉得BE实体查字段速度及效果比较直观。

C、只有需要知道字段意义的时候方需要翻翻数据字典,但是这个方法也可以省略。技巧:

IE打开的U9单据页面,用IE自带的开发功能(F12)就能捕捉到对应的字段名称,而且前台字段名称与后台字段名称是相同的,这样很方便。如下图:

3、sql语句建立报表

(1)、建立数据源、数据查询

建立数据源方法与上述建立实体查询一样,数据查询时,因为是sql语句建立报表,固选择"Text"。

(2)、根据需求编写SQL语句

a、根据需求可以先编写OQL语句,再翻译成SQL语句,将编译成功后的SQL语句,复制到窗口中。

b、点击预览查询结果,下面的窗口中可查询结果,左边的"字段"窗口中会显示出SQL查询语句中选择的字段。

(3)、同样可以根据需求设置已选字段的扩展属性(此步方法同实体建立报表时的字段扩展属性)

(4)、查询方案(报表参数设置)

报表参数设置方法也同实体报表中的报表参数设置方法。

(5)、报表页面布局方法也与上述实体报表项目时页面布局方法相同。

(6)、分析实际需求编码OQL语句,编写OQL语句可以参照辅助资料,数据字典、实体查询工作(classview)等;有时这些工具更新的比较慢,建议大家可以建立一个实体查询的报表,利用实体查询报表中的查询实体来查询实体名称。这样比较准确。

用户可以使用UBF自带的OQL翻译工具(报表菜单中)来翻译编写的OQL语句,经本人测试,UBF自带的OQL翻译工具比classview带的翻译功能执行速度快的多。

4、存储过程建立报表

三、复杂报表

(1)、DataCommand代码生成向导

(2)、选择服务品名称,生成路径。

(3)、往下根据向导进行选择字段。

(4)、VS打开生成的DataCommand,点击生成。

(5)、UBF中导入Data Command(在导入之前需要新建报表容器)

(6)、发布应用。

(7)、找到生成发布在Portal下的dll文件,用U9管理控制台工具上传到SQL报表服务器目录中。

ClientSystemManage目录下:UFIDA.U9.MO.Report.DataCommand.dll

UBFV21目录下:UFIDA.U9.UserDefine.MO.Report.DataCommand

(也可以将生成的DataCommand\Bin\Debug中的这两个文件用来上传即可)

修改Buildup.xml中的地址,可以使用UBF发布工具。

四、查询二开

1、BE查询

2、列表查询

3、DTO查询

(1)、将:D:\UFIDA\UBFV21\U9.VOB.Product.Component\Unconfiged\Component中的

复制到:D:\UFIDA\U9V21\Portal\ApplicationServer\Libs

(2)、将:D:\UFIDA\UBFV21\U9.VOB.Product.Component\Unconfiged\Component中的

复制到:

D:\UFIDA\U9V21\Portal\ApplicationLib

(3)、布置UI,将D:\UFIDA\UBFV21\U9.VOB.Product.WebPart中的

复制到:D:\UFIDA\U9V21\Portal\UILib

(4)、执行源数据。地址在:D:\UFIDA\UBFV21\U9.VOB.Product.Other中的两个文件中的SQL脚本都要执行。执行时先执行Metadata,再执行Resource。

五、开发实例

单据打印分组

UBF中打印单据分组有两种方法,一种是用菜单上"报表"-分组,一种是表行是右击添加分组,两种方法各有优异。以出货单按品名分组汇总出货数量为例子!

1、菜单上的分组功能

(1)、选择菜单"报表------分组",找开分组设置局面。

(2)、选择依据字段,这里面是"品名",选择结束拆页,即可在一个品种结束时,下一个品种显示在下一页。

(3)、确定返回到主设置界面,设置合计字段,这里面是出货数量。本页合计函数是:PageSum,本单合计函数是:Acc PageSum。

(4)、格式调整调整,正常保存、发布即可使用了!

说明:菜单中的分组功能有两点不足:

(1)、在最后打印的单据时的效果有不足之处,比如当一个料品在第一页显示时表头上会留有空行,如果这个品种行数多了显示到第二页去,则在第二页时表头就没有空行了,这样显示的效果欠佳。

(2)、报表分组后,每遇到一个新的品种就会分页显示,如果一些品种行数少,一页上打印了几个就换下一个品种下一页了,那么就会造成纸张的浪费。(当然了这需要根据客户要求,如果客户一定要一个品种一份,那也没办法)。此功能上有"结束处是否拆页",如果设置成不分页,就会出现分断显示了。

针对上述不足,使用地"表行"中的分组功能可以一一得到解决。

2、表行分组

(1)、在表行上右击选择"增加(组)"打开增加组窗口。

(2)、选择分组表达式(分组依据),记下分组名称"Table_Group_1",分组结束后拆页,根据实际情况选择,如果需要一种品种结束分页,就选择上,如果不需要一个品种结束时拆页就不选择。如果未选择,则就会在同一张单据上打印,共用表头也不会留空白,能解决上面方法一中浪费纸张的问题。

(3)、确定后会默认出来两行分组行,根据需求,是将分组数放在上面还是下面,删除其中一行,这里面要求将分组数据放在下面,则我们删除第一行。

(4)、这里面的函数选择group sum,格式如下。

(5)、调整好格式,正常保存发布即可。

注意:行分组函数是groupsum,数据源为此报表中的table序号,有的时候我们同时打开多张报表模板,table的序号会自动连续编写下去,我们一定要以当前报表中的table序号为准,否则就会报错。这里面一张报表中只有一个table,在分组时就会显示table_group_1

如果用户不想在行中显示以品种合并的数量,也可以右击把合计行删除了,删除合计行并没有将分组依据删除,依据仍然还在,如果真正想删除分组依据,需要右击选择"删除所有分组"。

需要技术支持:飞翔信息技术科技有限公司 - 公司介绍

相关推荐
Channing Lewis1 小时前
sql server如何创建表导入excel的数据
数据库·oracle·excel
秃头摸鱼侠1 小时前
MySQL安装与配置
数据库·mysql·adb
UGOTNOSHOT1 小时前
每日八股文6.3
数据库·sql
行云流水行云流水2 小时前
数据库、数据仓库、数据中台、数据湖相关概念
数据库·数据仓库
John Song2 小时前
Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
数据库·redis·哈希算法
IvanCodes2 小时前
七、Sqoop Job:简化与自动化数据迁移任务及免密执行
大数据·数据库·hadoop·sqoop
tonexuan2 小时前
MySQL 8.0 绿色版安装和配置过程
数据库·mysql
JohnYan2 小时前
工作笔记- 记一次MySQL数据移植表空间错误排除
数据库·后端·mysql
我最厉害。,。3 小时前
Windows权限提升篇&数据库篇&MYSQL&MSSQL&ORACLE&自动化项目
数据库·mysql·sqlserver
远方16093 小时前
20-Oracle 23 ai free Database Sharding-特性验证
数据库·人工智能·oracle