一直关注OpenERP,但一直未真正使用。最近一些数据想规范管理,省得使和EXCEL与WORD等处处找,因此想到OpenERP的自定义功能比较好,就再次找来相关资料从新拾掇起来。在这过程当中,发现了许多使用与开发上的一些问题,特此记录下来,以便后查。python
1、安装sql
操做系统:Ubuntu12.04数据库
修改:echo 'deb http://nightly.openerp.com/7.0/nightly/deb/ ./' >> /etc/sources.list服务器
执行:apt-get install openerppython2.7
问题:前后安装了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-8", LANG = “en_US" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
解决方案:spa
1) 执行:sudo locale-gen en_US.UTF-8
2) 在 /etc/environment 中添加如下二行
操作系统
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
完成后上面的问题没有了,但仍然不能正常启动,经过反复分析日析,发现安装的Postgrel没有相关安装文件和初始数据库,从我本机复制相关文件到相同目录并作简单修改后正常启动。code
安装完成,登陆进入,选择:设置->用户 ,修改管理员用户设置启用“技术特性”后重性登陆。对象
2、关于自定义数据表与表单等
其实OpenERP的自定义功能确实很方便,基本上普通的全部的数据编辑功能都能完成,但仍建议你自已试着开发完成一个模块,这样你能对自定义的操做会有更深的体会。
3、模块开发问题
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"/>。但您必须注意,对应的对象必须定义至少一个查询视图,不然将报错。