一直關注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-8", 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-8 LC_ALL=en_US.UTF-8
完成后上面的問題沒有了,但仍然不能正常啟動,通過反復分析日析,發現安裝的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"/>。但您必須注意,對應的對象必須定義至少一個查詢視圖,否則將報錯。