关于人力资源初始化时可以使用的 xml 导入数据模板.
-
因为新写的模块需要频繁地清空数据库, 并录入一些演示数据. 如人力资源里的员工信息, 部门信息.每次都要重复录入..很是麻烦.
所以就写了一个 模块_init.xml 文件来完成 安装模块时, 自动将员工及部门信息录入.
豆来分享一下 这个初始化一些东西的xml.以 初始化人力资源及部门设置的一些东西
首先, 要定义用户, 用户可以使用CSV导入, 也可以使用 xml 完成. 个人比较喜欢 xml
假定 四个用户
user001~user004俩部门
部门001 部门002部门001 只有一个人 user001 既是头儿, 又是兵
部门002 有三个人 user002是头 其它 user003, user004 是兵
就可以写如下 xml 文件, 丢到任意一模块去 导入 或者 新建一个 人力资源初始化模块.
[code]
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1"><!-- 用户定义 --> <record id="user001" model="res.users"> <field name="name">用户001</field> <field name="active">True</field> <field name="login">user001</field> <field name="password">user001</field> <field name="context_lang">zh_CN</field> <field name="action_id">1</field> <field name="menu_id">1</field> <field name="company_id">1</field> </record> <record id="user002" model="res.users"> <field name="name">用户002</field> <field name="active">True</field> <field name="login">user002</field> <field name="password">user002</field> <field name="context_lang">zh_CN</field> <field name="action_id">1</field> <field name="menu_id">1</field> <field name="company_id">1</field> </record> <record id="user003" model="res.users"> <field name="name">用户003</field> <field name="active">True</field> <field name="login">user003</field> <field name="password">user003</field> <field name="context_lang">zh_CN</field> <field name="action_id">1</field> <field name="menu_id">1</field> <field name="company_id">1</field> </record> <record id="user004" model="res.users"> <field name="name">用户004</field> <field name="active">True</field> <field name="login">user004</field> <field name="password">user004</field> <field name="context_lang">zh_CN</field> <field name="action_id">1</field> <field name="menu_id">1</field> <field name="company_id">1</field> </record> <!-- 用户定义 --> <!-- 员工定义 --> <record id="user001_employee" model="hr.employee"> <field name="name">张一</field> <field name="user_id" ref="user001"/> </record> <record id="user002_employee" model="hr.employee"> <field name="name">张二</field> <field name="user_id" ref="user002"/> </record> <record id="user003_employee" model="hr.employee"> <field name="name">张三</field> <field name="user_id" ref="user003"/> </record> <record id="user004_employee" model="hr.employee"> <field name="name">张四</field> <field name="user_id" ref="user004"/> </record> <!-- 员工定义 --> <!-- 部门定义 --> <record id="pm_001" model="hr.department"> <field name="name">部门001</field> <field name="company_id" eval="1"/> <field name="manager_id" ref="user001"/> <field name="member_ids" eval="[(6,0,[ref('user001')]"/> </record> <record id="pm_002" model="hr.department"> <field name="name">部门002</field> <field name="company_id" eval="1"/> <field name="manager_id" ref="user002"/> <field name="member_ids" eval="[(6,0,[ref('user002'), ref('user003'), ref('user004')]"/> </record> <!-- 部门定义 --> </data>
</openerp>
[/code]
总结:
一般来讲 导入数据, 都是针对一个 object 进行导入
所以 每天记录是一个 xml 中的 <record .... ></record> 标签.
对于记录所属 object 则由 record 标签中的model 属性来指定.
<record 下面的 <field 标签,则是针对字段来讲的. 一般来讲, object 中 必填字段 就是必须要定义数据的.当然, 好象那些带默认值的 字段 可以 不用写入
导入时的难点主要 是因为 字段类型与录入的数据不匹配.实验得出
char float int date 等字段都可以在 <field>Node</field> Node 中指定就行了.
boolean 字段 可以 <field name="字段名" eval="True|False"/> 来提定many2one 一般可以使用 eval="many2one对象的database_id" 来指定, 也可以使用 eval="ref('many2one对象ID')" 来指定
对于many2many 要麻烦一些
我的做法, 参考其它模块 使用 eval="[6,0,[值列表]]" 来完成.不理解的地方, 可以参考一下上面的 xml 文件 来阅读.
希望大家喜欢, 并给大家实施时整实施初始化数据提供一点点参考
[[i] 本帖最后由 mrshelly 于 2010-4-1 13:38 编辑 [/i]]