OE - RML动态内容

SXW/RML报表中,你可以在中括号中加入Python代码,以获得OpenERP中的对象(object)

代码可以使用如下变量:

可以用的 Python 对象/变量:

objects : 将要打印的object记录(例如发票(invoice)对象).
data : 向导(wizard)中获得的数据
time : Python的time模块(详见Python文档).
user : 运行这个报表的用户.
可以用的 Python 函数:

setLang('fr') : 设置语言,用于自动取得对应翻译.
repeatIn(list, varname[, tagname]) : 遍历模板当前部分list中的对象 (整个文档, 当前段落, 表格中的当前行),可以在模板中使用varname作为变量名。 从 4.1.X版开始, 你可以使用第三个(可选的)参数指定循环结果放在哪个.RML标记中.
setTag('para','xpre') : 在由sxw转换rml文档过程中,替换指定标记。这里是用xpre替换para (xpre 是一个预定义格式的段落)。(?)
removeParentNode('tr') : 移除类型'tr'的父结点, 这个参数经常在条件语句中使用 (如下例)
标签示例:

[[ repeatIn(objects,'o') ]] : 循环objects,指定变量名为o.
[[ repeatIn(o.invoice_line,'l') ]] : 对o的invoice_line循环,指定变量名为'l'.
[[ repeatIn(o.invoice_line,'l', 'td') ]] : 循环每行,并为每行数据创建一个单元格
[[ (o.prop=='draft') and 'YES' or 'NO' ]] : 根据变量‘prop’输出YES或 NO
[[ round(o.quantity * o.price * 0.9, 2) ]] : 可以进行变量计算.
[[ '%07d' % int(o.number) ]] : 数字的格式化输出
[[ reduce(lambda x, obj: x+obj.qty , list , 0 ) ]] : 列表中所有对象 qty 字段值的和 (可以试一下用 “object” 作为列表变量)
[[ user.name ]] : 打印报表的当前用户名
[[ setLang(o.partner_id.lang) ]] : 从变量中取得语言
[[ time.strftime('%d/%m/%Y') ]] : 以dd/MM/YYYY格式输出时间, 查阅python文档获得关于“%d”的帮助, ...
[[ time.strftime(time.ctime()[0:10]) ]] 或 [[ time.strftime(time.ctime()[-4:]) ]] : 只输出日期.
[[ time.ctime() ]] : 输出当前日期 & 时间
[[ time.ctime().split()[3] ]] : 只输出时间
[[ o.type in ['in_invoice', 'out_invoice'] and 'Invoice' or removeParentNode('tr') ]] : 如果type是 ‘in_invoice’ 或‘out_invoice’ 那么输出 ‘Invoice’;如果 不是,‘tr’类型的父节点会被删除.

报表中显示二进制字段图像

[[ setTag('para','image',{'width':'100.0','height':'80.0'}) ]] o.image or setTag('image','para')

 

猜你喜欢

转载自xiaolin0199.iteye.com/blog/2037090
今日推荐