|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Teamcenter二次开发实例教程-报表开发教程
0 J5 g1 B7 V7 Y& u# C D7 Q. K. W4 ]: U
在大多数情况下,我们为客户做实施时,采用的是重新开发报表的功能。以满足客户多种多样的报表模板。然而Teamcenter8,9对报表开发有不错的支持。我们可以通过简单的配置开发出功能强大的报表。本文就Teamcenter OOTB报表技术展开讨论,希望能在众多报表开发方法中再增加一种可能性。' i- R" p6 f! f3 x. l4 O8 {
下面我对两类报表开发方式优缺点做了个简单对比* B; l- R3 l* R8 ? ^
2 y( [% I9 \$ K2 P' s+ K3 \* j/ c传统报表开发手段
5 t& f9 R2 W- }$ N; [6 YOOTB报表, T3 `6 N/ {( ^6 x
比分
( e& ^9 [ Z# i0 y) D1
4 E6 x$ }6 p* P, E& T自定义模板,灵活多变
; `, g2 p6 i w/ U8 w% Y' {格式不能完全满足客户需求
$ }* A9 y& J7 J- n/ P' u+ A或非常难满足客户需求
1 f7 A- u7 z% x- c( O4 R9 d1:0
3 A4 T. [& j( p, ~- Y2
1 a# Q" `1 R6 x6 w- q大量开发和代码维护
! @6 Y# b s& X9 n$ q y或用POI,Excel报表3 p+ j+ O" a" u& \/ [7 n. ?
开发量小,仅需简单配置/ {. P% U6 m- j5 D! P' ]0 L; u4 E: z# p
1:1- ?+ H K+ h; |! B0 s
3
3 O0 x# y7 |3 O. ]" i+ m8 G% e遇到大数据量报表生成不了
8 f9 M8 r# o3 i4 g速度很慢
$ j! p$ L# E6 b! a处理大数据量有优势
1 I* J3 b2 _5 B% O( @' X速度非常快
1 w" v, k+ Q5 B2 _! o v1:2
$ {2 |' A; e8 m# H' P/ \; a4
4 F. v9 L% E1 k( i" e开发周期长,BUG多6 H) u6 B8 i6 @8 p
开发迅速容易
b, u0 q+ Y8 g* g! Q' @+ _0 ?1:3
7 j* l5 A* }5 K& c9 r3 W
y, X* D4 ?) j' s2 {! |一、报表生成) u2 ~9 X5 b7 s' T8 C
首先来开OOTB的零部件BOM. X! f3 _3 M4 u6 J) _) G. a
9 b3 A: \, D; ]1 T* G右键点击顶层部件,生成报告。0 h: `: h, }) F0 |2 N5 i
* w5 \+ [7 Z) M' V3 e0 J3 x出现报告生成向导界面,选择PS – BOM结构,下一步! y* q; E2 ~) b/ h( z( s% ?9 P* J
$ \3 l( w6 b8 V8 } r# t: l' E
OOTB为我们提供了两种方式的报表:* O! k2 O% y0 b9 y8 n- A
HTML
6 S i, [0 `) r0 C% ]" s XSL- P, @/ t% ?+ P# ]9 s
每种报表都有对多国语言支持版本,所以下面对话框中有4个选项。我们选第一个。- O" O; v+ L. {
5 [4 g- E: ^0 t! k' J/ c2 y
生成报表如下:
! Z; |4 ^; s& {! o9 g/ P' e4 E
4 Q- G j5 T/ ]( i, N+ n - h8 }: r/ }% W/ C% R
二、报表配置
% m- Z, G) E/ H- K6 a' T报表配置涉及两个Teamcenter应用程序:$ W* l7 F P9 \: o
报表构建器8 i6 K% C0 U' P
PLMXML
; O4 d& h- Y3 V8 n4 z3 s% m报表构建器主要定义报表所应用的资源、模板文件和PLMXML导出规则0 L/ J R5 I" I
' i; E' C0 m* m7 m6 r7 Q
PLMXML主要负责以PLMXML格式导出BOM数据
4 ^9 t+ R1 R% F) |! V. o# g* V) F% Z; G" [: H
7 ]: u0 o! `/ k& D& c
三、应用举例
' v/ y# {; w( Z) W+ I. }6 h! ? 下面对于一个具有广泛统计意义的功能用OOTB报表方式来实现。需求是:统计零件在整个BOM中的使用次数。
/ [# z0 W4 f+ N; P, H5 e! h 对于这个需求我们只需要增加一段带计算功能的代码就能实现。先通过系统的搜索功能找到html报表模板文件。! ?2 x" ?2 Y* h$ p
! X9 t4 p' H, u选中找到的数据,右击,命名引用。; K! p6 \* n4 Z% W- p* y$ @ z" G2 c2 A
, m- g( C; ~# E% C) O% R: ?点击导出,把模板保存到本地。
' j% }2 i' a( |: ~8 L9 N( T) @2 ~1 O \3 m: a3 t
下面对Javascript有一定要求。9 G, {$ p$ R: w% f! @8 L" x6 T }
首先对表格增加一列来容纳计算的总数量:
. `* i2 Z, e0 n6 s& L, U! L' q9 B3 u
在xsl中找到上面两处代码增加、修改红框部分。
9 }; R2 ]6 w6 k6 W2 d定义如下函数,并且在onload事件中调用" ~# y+ G" |5 X. v/ S4 P% ?4 e
function showPart(){
) S- I0 N0 e6 T* S, b) A$ \//获取html的表格对象
+ X: t( o' A& Gvar tb = document.getElementById("table");
* E& C) }7 S2 P# i8 k, Y* J" K0 h! D: w//获取表格行对象- Y7 ?3 h' `: n$ F' ?
var rows = tb.rows;, U" G; o6 v* Y) ?- w8 j' F4 l" ?
//循环遍历table所有行5 `& B/ b$ Q+ Y2 s" I* I; e6 p# c& ~
for(var i = 3; rows.length>i; i++){
/ _( {. S5 e3 ?% u/ y- Q7 `2 a* P//获取每一行的零件号
/ e ~- r2 V5 t1 [; K' ]4 ~var itemName = rows[i].cells[1].childNodes[0].innerHTML;
8 c) u9 ?( d# {1 ?//初始化零件总个数/ g7 u5 u0 `0 v* _" n
var quantity = 0;& T4 k* o0 C# S! l: q" i+ A. ]
//循环进行比较
8 w: i, p0 p$ ~for(var n = 3; rows.length>n; n++){+ z4 I( {6 r% s5 E2 G: X; P
//获取每一行的零件号
; B- h0 U' v' O3 j2 s0 o. D' o nvar itemStr = rows[n].cells[1].childNodes[0].innerHTML;
+ Q2 G. H! i: @# O/ \: n& S) d//获取零件数量
8 {' K# d3 i H5 L2 q% A, L R8 Cvar qt = rows[n].cells[4].childNodes[0].innerHTML;( {. l! J+ `6 {+ |
//判断是否是相同的零件: P' y+ K1 B( q& J$ d" v
if(itemStr == itemName){
* g+ c; M# A$ r- N6 J//若零件号相同,把数量进行累加4 y" t* I& ` D/ E% O% k# ~
quantity = parseInt(quantity) + parseInt(qt);
4 G0 `* B4 W7 p0 h) ^ @}0 d" k& |1 s/ U; U
}5 f5 N1 I# m5 B+ R- d
//在统计列显示总数量; Q3 e/ W+ r7 Y) S& I4 |' X/ O3 [; \$ j
rows[i].cells[5].childNodes[0].innerHTML = quantity;
( ]9 ?! W2 b4 e: O# R}; b4 r" C! `1 l8 B" \5 Q
}
8 D, L5 L7 B- R6 u5 R" a' M. w修改好后,保存回源数据集。注意先删除原来的再导入新的。
( H9 u- }$ u% q5 s# c+ q% f! \( T& o7 } ?) [1 g0 {# t
0 G2 z% `5 y7 S: |2 ?) W A4 K. o
重新生成报表测试下:2 p) D% i3 f; H2 T- F8 |
|
|