|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
Teamcenter二次开发实例教程-报表开发教程
/ L/ {' j ~5 ] a. u+ q2 ?0 @3 e9 H. a
在大多数情况下,我们为客户做实施时,采用的是重新开发报表的功能。以满足客户多种多样的报表模板。然而Teamcenter8,9对报表开发有不错的支持。我们可以通过简单的配置开发出功能强大的报表。本文就Teamcenter OOTB报表技术展开讨论,希望能在众多报表开发方法中再增加一种可能性。/ B2 c+ m9 y& f
下面我对两类报表开发方式优缺点做了个简单对比3 Q& q1 Q; T0 l) Z: {% v3 q& S
7 G6 q. }- R' ^6 f
传统报表开发手段+ b5 L, u7 o! j" O; K- F
OOTB报表6 w: X1 l9 j; }* M/ P* J
比分$ I* u- z" u: s$ a" q2 l! S
1: p: b5 j$ ]5 q* K9 q! F
自定义模板,灵活多变# m& }% W8 ~) f% b# G! Z
格式不能完全满足客户需求
. i+ k. O* S' V+ B! V或非常难满足客户需求6 G& w/ e' }( B* q2 z& E
1:0& e( [9 b$ i. @
2' N0 l! ?! V* }9 @$ O9 ?( D
大量开发和代码维护
& b1 c+ ~2 [, p; ] Q或用POI,Excel报表
' L( z! D+ U3 u开发量小,仅需简单配置; e& B# T0 y& d: G6 B# y
1:1
/ g$ O! n# o6 N. B Y# u3* E" G7 ~- k% |+ X- H; R* ]3 M
遇到大数据量报表生成不了% n. v g; u6 d, ]) j6 g
速度很慢
" ~7 g7 @" ]! T. M9 F! i处理大数据量有优势9 x8 N; [# t3 d2 q J1 u9 p3 s
速度非常快& P' ?# {5 d2 v4 R
1:2
! R' {* p, |3 Y6 @4* h5 V# u0 E' Z/ n
开发周期长,BUG多% g1 W+ M6 ^. s) j
开发迅速容易% u# n1 l7 m0 U2 t4 j
1:3
% j: v5 {. {4 }9 i2 _. P7 X" k
$ a0 g3 B) ^) S3 z1 }! F一、报表生成9 _ M% h1 {+ p3 k
首先来开OOTB的零部件BOM
5 Y) [$ X4 @" U* f8 V! m3 [0 e; X9 j8 ]
右键点击顶层部件,生成报告。
* @, M6 Q/ `6 y/ E6 g
8 n7 r/ l/ o# q& p6 g出现报告生成向导界面,选择PS – BOM结构,下一步3 |$ |; u2 |0 I
, I& K2 k6 _" A/ N, J1 R. g6 [OOTB为我们提供了两种方式的报表:% L( R/ {; F) y. H, ]: a# n
HTML
2 }& n) x% l, f6 [0 @1 q XSL
( k) a' x# b, m6 B/ |2 [每种报表都有对多国语言支持版本,所以下面对话框中有4个选项。我们选第一个。9 L0 R- ]0 s9 {- P* ?, j+ s
5 S1 @' h: \; s7 a' }
生成报表如下:! \4 b, p( X0 R8 [' @$ X! q' C% G
- [' }3 I& }% r9 B! Q : J) r/ u1 P6 e0 P+ k- c
二、报表配置. h! \7 H% l+ V8 T! ^9 u" ^; t
报表配置涉及两个Teamcenter应用程序:
W& C5 ^2 |* ~% ^% ^% [; e 报表构建器# N6 p$ h' P% h$ r5 P
PLMXML ^6 N. U n) W1 R
报表构建器主要定义报表所应用的资源、模板文件和PLMXML导出规则
3 K# M3 C) r5 \9 z& r
$ }4 V, }1 `' A: @PLMXML主要负责以PLMXML格式导出BOM数据
5 n* R7 m: A/ K3 A; z
3 w- o. _3 A- W y3 t
$ J6 z2 J- M8 f# w三、应用举例, |* p/ k/ @. Z
下面对于一个具有广泛统计意义的功能用OOTB报表方式来实现。需求是:统计零件在整个BOM中的使用次数。
) X. U6 X& \ f& ~8 a9 ], w% l 对于这个需求我们只需要增加一段带计算功能的代码就能实现。先通过系统的搜索功能找到html报表模板文件。 P* M: W8 C F8 O1 ?; W( H
" V- o* t: F4 y T
选中找到的数据,右击,命名引用。8 P( }1 ~+ h# f
3 P4 p7 |3 u) h# }( B
点击导出,把模板保存到本地。
7 R! x' a$ B5 R2 K# j- h: r) ^3 `0 i
下面对Javascript有一定要求。. I# ^- F) C: |5 V H# e( a$ B* D! a
首先对表格增加一列来容纳计算的总数量:
- R9 l2 s+ M& |/ o- p Z) I$ H+ S7 D& T4 Q
在xsl中找到上面两处代码增加、修改红框部分。
' c) D& k* o- ~* C% e* A定义如下函数,并且在onload事件中调用
7 ?: }% `& f3 Ifunction showPart(){5 W; V' E: h8 F& l( z
//获取html的表格对象$ T5 {: p# ^( |( g# B. ]8 s1 @
var tb = document.getElementById("table"); o* N4 O: ~" ?; O) h
//获取表格行对象( X, w3 ?# S% Y
var rows = tb.rows;8 K5 z) r/ q; w) N
//循环遍历table所有行. J# J2 g" Q, E( G0 \& @& @
for(var i = 3; rows.length>i; i++){! F9 V/ \6 L7 z" E2 c" m$ P
//获取每一行的零件号
$ ` G. F& ^) v; e* Uvar itemName = rows[i].cells[1].childNodes[0].innerHTML;1 _1 k9 ^4 x, \
//初始化零件总个数: v/ p ?+ m' Q# `5 y2 x2 A
var quantity = 0;
- H% V$ r3 ~" l- m//循环进行比较
; W1 @% b2 w2 J2 d' |7 e; } g* Ofor(var n = 3; rows.length>n; n++){; r0 O+ `: m" z. _
//获取每一行的零件号8 u7 K+ g6 z# V. }6 `2 v
var itemStr = rows[n].cells[1].childNodes[0].innerHTML;
$ j1 @4 ^/ t0 a! T' h5 m8 p//获取零件数量
" G' \2 B, k0 Lvar qt = rows[n].cells[4].childNodes[0].innerHTML;4 w9 Z7 O' P- G; y4 c7 m
//判断是否是相同的零件
, } _( E7 |$ i' J) i* d5 k7 p# E' @if(itemStr == itemName){
* g; Z- v% f1 H3 J1 r9 e$ K" R//若零件号相同,把数量进行累加0 B% M c- w; F( ~% b# o ` r
quantity = parseInt(quantity) + parseInt(qt);
9 E7 e0 D7 b$ Z1 L7 c2 @}. A$ e+ I4 M/ v
}6 S P' U5 E% m* ~
//在统计列显示总数量 i- T% A Q0 \- I4 A
rows[i].cells[5].childNodes[0].innerHTML = quantity;
7 K3 O9 Y( ~# v2 k/ K}
' W" P0 K0 u( i}
! c! e3 G- g% Q7 P修改好后,保存回源数据集。注意先删除原来的再导入新的。
& O2 [9 U2 b$ e
' x+ s' p/ D v3 j9 a6 _$ M) F8 d; ~/ [, D% H# n. g
重新生成报表测试下:; Z" @; L7 d1 }: R8 T5 r1 E
|
|