OpenERP 使用与开发笔记(一)

时间:2021-10-14 19:50:50

一直关注OpenERP,但一直未真正使用。最近一些数据想规范管理,免得使和EXCEL与WORD等到处找,所以想到OpenERP的自定义功能比较好,就再次找来相关资料重新拾掇起来。在这过程中,发现了许多使用与开发上的一些问题,特此记录下来,以便后查。

一、安装

操作系统:Ubuntu12.04

修改:echo 'deb http://nightly.openerp.com/7.0/nightly/deb/ ./' >> /etc/sources.list

执行:apt-get install openerp

问题:先后安装了2台(一台本机测试,一台正式部署),正式部署的发现Postgresql不能正常启动,开始总是提示:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MESSAGES = “en_IN.UTF-",
LANG = “en_US"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

解决方案:

1) 执行:sudo locale-gen en_US.UTF-8

2) 在 /etc/environment 中添加以下二行

LANG=en_US.UTF-
LC_ALL=en_US.UTF-

完成后上面的问题没有了,但仍然不能正常启动,通过反复分析日析,发现安装的Postgrel没有相关安装文件和初始数据库,从我本机复制相关文件到相同目录并做简单修改后正常启动。

安装完成,登录进入,选择:设置->用户 ,修改管理员用户设置启用“技术特性”后重性登录。

二、关于自定义数据表与表单等

其实OpenERP的自定义功能确实很方便,基本上普通的所有的数据编辑功能都能完成,但仍建议你自已试着开发完成一个模块,这样你能对自定义的操作会有更深的体会。

三、模块开发问题

1.自定义的模块要注意部署的位置,在Windows可能比较简单,但在Windows我却发现很多个addons目录(/usr/share/pyshared/openerp/addons与 /usr/lib/pymodules/python2.7/openerp/addons),经过测试在Ubuntu下应放到:/usr/lib/pymodules/python2.7/openerp/addons目录中。

2.上传后,选择菜单:设置->模块->更新模块列表 根据向导完成模块更新。

3.点击“可安装模块”,这时你将看到系统已安装的模块。可能你开始会和我一样,怎么找不到新上传的模块呢,在搜索框里移除预定的过滤,即不是只显示已安装的,而是显示所有的。然后输入定义的模块名称,即可以找到你开发的模块。点击后根据向导进行安装,第一次开发部署肯定会遇到很多问题,根据提示,更详细信息在/var/log/openerp中的可以找到。

4.有修改上传后,为了可正常安装,需要执行:service openerp force-reload.

5.第一次上传我们可能会上先上传一个压缩的ZIP包,然后解压,解压后忘记删除它,然后每次只上传更新了的文件到解压缩的文件夹中。对于XML文件好象是可没有问题的,但是py源代码文件系统只会加载原zip包中的源文件。(估计是一个BUG),困扰了我好久,我测试的在本机好好的模块,上传到正式部署的服务器就不行了。

6.定制的一个FORM中的某个Page不显示字段的Label,与其它比较发现是在Page节点下没有Group节点,添加即可,如:<page><group><field name='name'/></group></page>.

7.one2many关系编辑问题。发现一个定义的VIEW可以在one2many共享.但有一个问题,是共享的字段会显示并在第一编辑空白显示many2one字段。经过研究找到解决方案:首先在one2many视图对应字段类似这样设置:<field name="lxr_ids" context="{'edit_from_parent':'1'}">。而在many2one视图中:<field name="dept_id" invisible="context.get('edit_from_parent', '0') in ['1']"/>。

8.将one2many字段设置编辑方式为many2many.发现one2many列表只能添加记录,而不能选择已经有的记录,这样你可以通过修改widget实现,如<field name="line_ids" widget="many2many"/>。但您必须注意,对应的对象必须定义至少一个查询视图,否则将报错。