Openerp 添加修改报表
Report Designer 模块在生成新报表的时候是有BUG的不建议直接使用,不过我们也可以通过该插件再写简单的代码来实现新添加报表,插件安装成功后我们可以按照下列方法来添加报表
OpenERP 简单报表开发指南 
1.模块基本元素 
shineit_account_demo 
- init.py 
- openerp.py 
- report.xml 
- report.py
init.py 
本例子我们并不需要引入python文件,不过作为模块,__init__.py还是需要创建。 
openerp.py
{ 
'name': 'Shineit Report Demo', 
'version': '1.0', 
'author': 'ShineIT<contact@openerp.cn>', 
'summary': '', 
'description' : """ 
basic report demo 
""", 
'website': 'www.openerp.cn', # 必须引入你所需要打印的模型的模块,例如我要打印account这里就引入了 # account_accountant
'depends': ["account_accountant"], 
'category': '', 
'sequence': 16, 
'demo': [], # 必须引入报表记录文件,此文件是会给系统添加一条报表记录 
'data': ['report.xml'], 
'installable': True, 
'application': True, 
'auto_install': False, 
}
report.xml
<!-- 
所有的OpenERP XML 记录必须通过 
<oepnerp> 
<data> 
... 
</data> 
</oepenrp> 
包裹 
--> 
<openerp> 
<data> 
<!-- 
这里通过<report>标签添加一个报表记录到系统,也就是添加一条ir.actions.report.xml记录。 
id:为本报表的id,同一个模块里必须唯一。 
model:报表对应的模型,例如我这里是“科目”account.account。 
name:报表名字,可以根据自己需要自定义 
rml:报表rml文件路径 
string:报表按钮名字 
--> 
<report id="report_shineit_account_demo" model="account.account" name="shineit.account.report.demo" 
rml="shineit_report_demo/account.rml" string="Shineit account report demo"/> 
</data> 
</openerp>
account.rml 
模版文件
2.RMl文件生成方法 
首先通过Openerp report designer插件修改好报表,然后另存为sxw格式的文件(例如:account.sxw),然后进入addons/base_report_designer/openerp_sxw2rml/ 路径下,运行: 
python openerp_sxw2rml.py shineit_report_demo/account.sxw > shineit_report_demo/account.rml
成功后会生成对应的rml文件,openerp在打印的时候就会根据该文件来作为模版来渲染报表。
附件里已经包括模块,可以安装测试使用
Openerp 添加修改报表的更多相关文章
- 关于devexpress报表XtraReport,动态修改报表样式(.repx格式),动态添加数据并使用的理解
		一.基本概念: XtraReports 中的每个报表都由 XtraRepot 类的一个实例表示,或者由该类的子类来表示(这种情况更常见). 因此,每个报表都作为带区的容器使用,而每个带区中都包含报表控 ... 
- VS2010 C#添加水晶报表及设计
		添加并设计水晶报表. [1]在VS中添加水晶报表 右击项目-->添加-->组件-->Crystal Report,输入文件名称“CrystallistReport”,如下图所示: 此 ... 
- JavaWeb_day03_员工信息添加修改删除
		day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ... 
- Web  1三级联动 下拉框    2添加修改删除  弹框
		Web 三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ... 
- roundcute 添加修改密码插件
		添加修改密码插件 现打开main.inc.php 文件,搜索“$rcmail_config['plugins']”,找到: // List of active plugins (in plugins/ ... 
- ASP.NET MVC用存储过程批量添加修改数据
		用Entity Framework 进行数据库交互,在代码里直接用lamda表达式和linq对数据库操作,中间为程序员省去了数据库访问的代码时间,程序员直接可以专注业务逻辑层的编写.但是对于比较复杂的 ... 
- 帝国cms添加修改会员字段时字段名不能带数字,否则注册页会出现空白
		这几天ytkah在整帝国cms会员模块,根据客户需求添加不同的字段,这个相对不难,可还是遇到了点问题.当时添加会员字段时,在字段名用数字“1”来代表第一次,如下图的字段名“1rwsdy” 但是添加以后 ... 
- 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除  vue表格组件  vue分页组件
		第三章 建议学习时间8小时 总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ... 
- phpcms v9 后台添加修改页面空白页问题解决方法
		phpcms v9 添加修改页面空白页的解决方法 找一个正常运行的phpcms 将caches\caches_model\caches_data 目录下的 content_form.class.php ... 
随机推荐
- Android-Activity启动模式-应用场景
			在上一篇博客中,Android-Activity启动模式(launchMode),就介绍了Activity四种启动模式的特点与使用等,但是到底什么样子的场景,去使用什么样子的启动模式呢 Activit ... 
- Android-HttpsURLConnectionHelp工具类
			Java版(HttpURLConnection)Https请求工具类 public class HttpsURLConnectionHelp { /** * 加密协议 */ public static ... 
- Android-FileIOUtils工具类
			文件读写相关工具类 public final class FileIOUtils { private FileIOUtils() { throw new UnsupportedOperationExc ... 
- Mysql部署
			1. 下载 Mysql 版本为: mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz (注意:下载二进制文件)  存放位置: /usr/local 2. 检查机器上 ... 
- Radius 认证协议介绍-兼rfc导读
			老规矩, 先看维基: 远端用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,意思就是同时兼顾验证(authent ... 
- 重新打造的我的Pugo
			Pugo博客已经搭建了好几个月了吧,给我感受到非常方便的就是,我换了好多VPS,迁移显得非常的方便,但是也有不足的地方,比如发布一篇新的博客,我每次都需要重新进入后台进行新的Post,还需要重新bui ... 
- bat  windows10系统垃圾清理---
			@echo off color 0a title windows10系统垃圾清理--- echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★ echo ★☆ ★☆ ★☆ ★☆ ★☆ ... 
- 「HEOI2014」南园满地堆轻絮
			题目链接 戳我 题目出处 菩萨蛮·南园满地堆轻絮 温庭筠 南园满地堆轻絮,愁闻一霎清明雨.雨后却斜阳,杏花零落香 ... 
- djang系列5.5-- 图书管理系统实例
			一.表格设计 E-R图 分析图 models.py from django.db import models # Create your models here. class Author(model ... 
- 201621123023《Java程序设计》第8周学习总结
			一.本周学习总结 二.书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 由图可知,传入参数后调用indexOf函数来判断是否存在,会循环整个eleme ... 
