|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Teamcenter二次开发实例教程-报表开发教程! L: F' D8 @ y3 U
6 @0 F5 d `" b' Z4 k2 I: j 在大多数情况下,我们为客户做实施时,采用的是重新开发报表的功能。以满足客户多种多样的报表模板。然而Teamcenter8,9对报表开发有不错的支持。我们可以通过简单的配置开发出功能强大的报表。本文就Teamcenter OOTB报表技术展开讨论,希望能在众多报表开发方法中再增加一种可能性。
; E9 b3 {- E) P: w& H 下面我对两类报表开发方式优缺点做了个简单对比8 E5 V+ |# l7 l* a# K* `- k
: B& E. f, A% X& c, ^; K$ A传统报表开发手段7 K3 e6 q* U) W7 c% s) K% N8 _1 A
OOTB报表
! ~& d' @; E4 Z- Z3 M比分
# m" y5 u+ Q8 |" I6 T" ]1 `8 d8 s13 o0 ~/ c0 _2 m( ?# ^* K2 W
自定义模板,灵活多变5 T9 k: q5 H8 P! k# Z& h
格式不能完全满足客户需求
( L( s) P" [5 U4 Q3 q: B或非常难满足客户需求! C) ?& E. s( v% t, c. s4 {
1:0
1 w, t8 v i5 E5 h2
$ N' G( w. e3 I- S- H6 n! L- e大量开发和代码维护
+ i/ ^9 m9 c# A或用POI,Excel报表/ m6 o$ r3 c8 E! y
开发量小,仅需简单配置3 S* A; Y1 `6 g* K+ Y/ g8 G
1:1
6 t" C4 h5 \: Q- i0 g3
6 S/ k; _1 v; N( A! s0 L遇到大数据量报表生成不了
" r) S- u' U8 l! ^速度很慢- F, [1 v6 d9 t* O! ?8 D/ ~
处理大数据量有优势/ O# h: M2 p* k& N7 b& k
速度非常快
3 ~8 J3 ^* |+ i' E9 U1 h' `1:2
( l! i! z( u, S1 I40 D% U' k3 D7 i; w% F- g
开发周期长,BUG多5 u! X# `' S4 ~3 M6 o/ q
开发迅速容易
1 M2 Q, N$ d6 m/ ?( e1:3
- o) ~/ O) d8 g: t% n, @. j $ H; j5 C. m+ o8 B' m9 e
一、报表生成 f/ ?# O7 }- O; _; M6 V e
首先来开OOTB的零部件BOM
8 x5 ~- e& o$ A, I% p4 Q: ]' p( y; e- ?# N
右键点击顶层部件,生成报告。
1 C! q8 W# Q2 a4 j( n6 Y6 j6 N p9 |/ X0 W# M/ k3 _( Z
出现报告生成向导界面,选择PS – BOM结构,下一步) I' a, G3 r: k# d- O
) Q4 \3 Z# h% ?1 d# m0 o2 A* M) i
OOTB为我们提供了两种方式的报表:" m2 f( ?9 F( ^5 u9 } p: @ P
HTML
+ J# i5 H( Z+ q% F% Z5 ^ XSL
* A$ F' w4 v4 F: n4 A每种报表都有对多国语言支持版本,所以下面对话框中有4个选项。我们选第一个。
% X) L. w( `0 t0 O( O) Q5 B8 h
# ^3 z6 k3 q( Y6 d生成报表如下:: `% T9 s, @# g. q9 c$ S6 w z
" x8 O4 c5 m0 `- p3 ?; S% t
6 x$ W& i' |+ O- i9 f二、报表配置5 g% X$ A* h) q- b( i! N- b$ [! \7 G
报表配置涉及两个Teamcenter应用程序:
, J6 X+ J \- B9 F0 O. r 报表构建器- k% x# [. Q6 e6 t9 ~: d8 d/ f
PLMXML
$ h7 A% A2 z& Q$ t& ^! O' r报表构建器主要定义报表所应用的资源、模板文件和PLMXML导出规则
: U7 ?+ @; O+ ~4 I4 ]" X- R& c! T) g
PLMXML主要负责以PLMXML格式导出BOM数据; z) J, W; Q, @% K9 R" A# a, E
) Y* ^ l0 J; l7 H e* i2 |1 @
7 S3 q( Z! Y$ r s- {
三、应用举例
5 T, ~+ o) @7 y- s 下面对于一个具有广泛统计意义的功能用OOTB报表方式来实现。需求是:统计零件在整个BOM中的使用次数。2 ?) O5 k( a) c9 V) e
对于这个需求我们只需要增加一段带计算功能的代码就能实现。先通过系统的搜索功能找到html报表模板文件。
5 `; Q9 Y; i8 ~$ A6 x& {9 Q% M* a* r2 L" z' N x
选中找到的数据,右击,命名引用。: M* ?: S0 L1 ?: p6 w
0 L6 m* Q$ k; i/ A: @1 V) {
点击导出,把模板保存到本地。6 r# Z/ t. y: H4 `, M& ]5 G5 \
- w$ i3 z3 L: a8 L- j0 T8 \下面对Javascript有一定要求。# Z, L6 Q1 T8 v% ~
首先对表格增加一列来容纳计算的总数量:
9 J' I7 A6 E Z F8 F+ T! p
9 m' C1 q/ T6 L, `" m在xsl中找到上面两处代码增加、修改红框部分。# l3 u1 o- a0 i, t( d; a7 a2 a
定义如下函数,并且在onload事件中调用. G+ `; j0 B4 `7 M! @/ g) Q$ f
function showPart(){) I" G7 `; R' E9 K
//获取html的表格对象
) j( d, O/ T8 u6 p, i0 Q8 k! ^var tb = document.getElementById("table");5 {; Y p. l5 _* l+ J! Z4 k
//获取表格行对象! U' `7 |& ~6 c" b, D6 |0 G6 R
var rows = tb.rows;
]7 N/ [7 T6 e$ s6 c7 q//循环遍历table所有行
6 Z' p. z% L) d- E+ O1 l/ Rfor(var i = 3; rows.length>i; i++){ q3 p4 v& s7 G( o5 S$ D3 D
//获取每一行的零件号9 m4 w( K+ }, H: X
var itemName = rows[i].cells[1].childNodes[0].innerHTML;
9 X2 l* O! i# M//初始化零件总个数& G3 d8 |' p: d# I
var quantity = 0;
& e2 w+ l+ E, T9 T! b, x u, N//循环进行比较/ g' d' z5 ~, A7 U( N% A
for(var n = 3; rows.length>n; n++){0 k; ~$ ?* r' C& \' z
//获取每一行的零件号4 ^) B# n; |* G4 u
var itemStr = rows[n].cells[1].childNodes[0].innerHTML;
2 Q+ U$ X7 w: j7 c7 v/ ~//获取零件数量
% _. |$ F. @3 z2 f* z1 _var qt = rows[n].cells[4].childNodes[0].innerHTML;
. J, K- F) f9 ~! l//判断是否是相同的零件
* c4 r D7 u# z- @. [( X2 N1 Jif(itemStr == itemName){
+ ^8 W4 [. d/ k) s/ [! s//若零件号相同,把数量进行累加7 R; b* a; C4 D- j+ B
quantity = parseInt(quantity) + parseInt(qt);
% W" L" o2 U5 N9 _2 M0 ~+ q}* K h) p7 _3 W
}$ n" N0 o! c" V5 v/ p8 Q& q
//在统计列显示总数量3 I4 M+ R( y" v* H& V+ G
rows[i].cells[5].childNodes[0].innerHTML = quantity;* F U* I/ u- U7 Y3 l1 D# t! w
}; f8 }+ c% `/ [3 d t/ t
}
& ^5 z, h& l- V! B" ~: F% e f修改好后,保存回源数据集。注意先删除原来的再导入新的。
& Y& h. ^9 r) }8 Q! v' n8 ~
1 w: `, w ]) d0 r
: o7 V, }1 \# G: J8 X1 x重新生成报表测试下:: h' z8 p( ^1 u/ f, J% G3 ~' c$ A
|
|