|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Teamcenter二次开发实例教程-报表开发教程
- Z7 k, Z. n! v2 y$ D+ k1 T- F
/ V3 U U: Y1 Q( ?& J: m$ D9 n, _: P 在大多数情况下,我们为客户做实施时,采用的是重新开发报表的功能。以满足客户多种多样的报表模板。然而Teamcenter8,9对报表开发有不错的支持。我们可以通过简单的配置开发出功能强大的报表。本文就Teamcenter OOTB报表技术展开讨论,希望能在众多报表开发方法中再增加一种可能性。 g/ s# f3 U B% h4 P
下面我对两类报表开发方式优缺点做了个简单对比
- t4 y7 d; {7 v9 y
2 Q; k) B, Y |) c8 m传统报表开发手段5 S" y( f. i8 v" U. C
OOTB报表/ c* i5 n3 X$ Q. ^* ^
比分
/ ` O1 c# _6 x0 H1
' G2 G. q/ F+ P5 I自定义模板,灵活多变
3 w* D; q! I: Q' x8 G7 |) U# C6 l6 ~格式不能完全满足客户需求4 F& T Y- d0 p
或非常难满足客户需求
$ \2 J/ X. J1 [! D# o6 y/ _1:0
' |8 f6 K0 v8 r; e2% N5 `& b9 e5 Q% J c& P* [2 C
大量开发和代码维护
( W" x2 O0 U2 T7 W3 U9 p或用POI,Excel报表
# ?) t, M- ?+ M% R/ F7 n2 }开发量小,仅需简单配置+ W! s" l$ g) I! h# w* |1 l
1:1
0 R/ r9 O. s' H- j8 m3
6 }5 ]1 k% w# S9 p" V8 o0 L遇到大数据量报表生成不了. `; G$ y, y3 y( [) l# I8 X( W
速度很慢
8 u* \% s$ [- v/ S处理大数据量有优势8 \( y! x% Q1 v9 ~6 p: p# _
速度非常快
6 r, T5 |2 i+ Q0 G1:27 ~3 f9 J1 R; _2 U4 T
4# M/ T( W1 J6 w- E4 B$ N! P
开发周期长,BUG多
% W- W# h" R5 S4 p+ f+ ?8 c$ {开发迅速容易$ }& X% x+ M# z- h+ u
1:3
/ W: s" }% ^' W X3 ?
2 s3 _; q6 W3 [一、报表生成
$ v0 m; \+ `" L/ K4 H/ b& j首先来开OOTB的零部件BOM
+ W" N1 d1 u; O' e8 o5 S) H. g3 r& Y8 B7 z
右键点击顶层部件,生成报告。5 C- L8 w9 B1 D- N! [2 T' T* W/ C
1 C7 y* d& |, F2 |: T% ~$ f7 {出现报告生成向导界面,选择PS – BOM结构,下一步$ `1 X& b: B1 w2 y g
4 B! ^0 i8 K, |5 _1 {. ?) B. i
OOTB为我们提供了两种方式的报表:" K/ u5 s! i) Q* J& _2 H( f" X
HTML. B# Q- s3 d, w3 o
XSL3 k' T1 R3 i% ^
每种报表都有对多国语言支持版本,所以下面对话框中有4个选项。我们选第一个。
4 V1 a m4 ]4 [3 l& E4 B ^. g6 |- ?. A1 h. m1 C
生成报表如下:
/ B, g: ], O0 G/ o7 \8 }$ P* G3 {: m; L$ g1 P, V& x" p" l
* W Z0 I2 U% j, u+ Z& Q二、报表配置
+ r7 w& Q1 ~6 E0 a0 B: h q% m报表配置涉及两个Teamcenter应用程序:
- m: X" l: k4 m! W* F7 D 报表构建器' Y2 s7 I/ `+ o1 g; K& u; a
PLMXML
1 k M: ]) `& P6 H. s' `; U报表构建器主要定义报表所应用的资源、模板文件和PLMXML导出规则, J6 m# N4 B0 k* r& k* e5 D
2 X I3 V J" R' S$ m% j) D
PLMXML主要负责以PLMXML格式导出BOM数据
8 L, V/ B( V6 C! y; Q R9 [* n, |- A, g" N( q! H5 k
; m5 d' L6 {$ q
三、应用举例
5 i6 k6 N/ G% R' g0 d9 u3 i 下面对于一个具有广泛统计意义的功能用OOTB报表方式来实现。需求是:统计零件在整个BOM中的使用次数。
) |2 {, x. X6 i6 Y! ^ 对于这个需求我们只需要增加一段带计算功能的代码就能实现。先通过系统的搜索功能找到html报表模板文件。
0 T3 h, N- ?. C$ l- n9 x( P: \6 X1 u* d0 o6 W! J
选中找到的数据,右击,命名引用。4 o+ N+ J# H$ e& j5 O1 u) d
2 u$ Y0 M( _/ E# e6 ?4 e
点击导出,把模板保存到本地。* s( h2 p! E* p9 U/ L( q0 n% I
7 i" C" g6 E' t下面对Javascript有一定要求。
^, [8 {2 t+ o- c& c* Z) }首先对表格增加一列来容纳计算的总数量:( y* `2 `; b' r
4 ~; \2 ~/ z* o: Q9 m% W/ ^在xsl中找到上面两处代码增加、修改红框部分。
/ w9 b/ y5 W' D/ S定义如下函数,并且在onload事件中调用
4 m6 N+ a9 A. K2 A/ A' w6 E* }function showPart(){
( k3 A1 } z$ N$ Q6 _ z1 a//获取html的表格对象- x& E8 h' Z8 f9 m6 B+ |; C* W. L( e
var tb = document.getElementById("table");
+ [0 g4 V6 |9 e T' f+ U//获取表格行对象3 i( N/ L- j) c. E
var rows = tb.rows;
; C' y2 f" ~& v6 G, m9 a P1 F//循环遍历table所有行. @& U+ C8 |7 m+ d/ c+ ], j
for(var i = 3; rows.length>i; i++){4 n% i5 h& {4 P- N: _3 }! z, Q# g- c
//获取每一行的零件号
! }5 K6 r4 f0 `! j- A3 p0 q( Yvar itemName = rows[i].cells[1].childNodes[0].innerHTML;$ Q7 }& F8 K1 |1 q3 `% Y
//初始化零件总个数
. ` S& G3 G j- [, s, Cvar quantity = 0;3 w$ L" _8 { }+ h# m& L- G/ [
//循环进行比较
6 K' v; N0 A6 ^) tfor(var n = 3; rows.length>n; n++){7 \. O. \. Z7 G& y
//获取每一行的零件号
- T$ ?5 s3 |$ E( S4 D* a; Q& i6 dvar itemStr = rows[n].cells[1].childNodes[0].innerHTML;+ w* p* E0 k5 O8 B9 d3 z9 Q" {
//获取零件数量
+ `5 E$ H( Y5 ^6 @var qt = rows[n].cells[4].childNodes[0].innerHTML;5 S2 e Z/ j+ h* |$ e
//判断是否是相同的零件5 _4 J$ r- w8 C7 R5 Y& k7 q b# ?
if(itemStr == itemName){! r5 r6 L& Z( b6 |+ \
//若零件号相同,把数量进行累加0 P( g+ K" h. s4 g2 s+ s& Z0 ~
quantity = parseInt(quantity) + parseInt(qt);
3 d" t, s' _4 R# ?1 @+ f% T% F) \}$ n& B' x4 ?% K# S# l- A# C( d
}
0 v- D: j* x1 Z+ ?# I' m4 V# e0 x//在统计列显示总数量4 N* Y" L5 K4 y) e5 E
rows[i].cells[5].childNodes[0].innerHTML = quantity;
) C9 K! {' p) S8 `7 u( c} [# r; ^1 `5 Z: {* }! S, Y
}) \, Y8 n( r I0 h$ I- N
修改好后,保存回源数据集。注意先删除原来的再导入新的。) y1 g* x) G8 W
7 S" S4 @ P. u* W/ o
, r1 |; t+ u6 W# q$ \
重新生成报表测试下:
) N* U' w2 @5 Q: y3 j% Y# K |
|