Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

关于人力资源初始化时可以使用的 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">

        &lt;!-- 用户定义 --&gt;
        &lt;record id="user001" model="res&#46;users"&gt;
            &lt;field name="name"&gt;用户001&lt;/field&gt;
            &lt;field name="active"&gt;True&lt;/field&gt;
            &lt;field name="login"&gt;user001&lt;/field&gt;
            &lt;field name="password"&gt;user001&lt;/field&gt;
            &lt;field name="context_lang"&gt;zh_CN&lt;/field&gt;
            &lt;field name="action_id"&gt;1&lt;/field&gt;
            &lt;field name="menu_id"&gt;1&lt;/field&gt;
            &lt;field name="company_id"&gt;1&lt;/field&gt;
        &lt;/record&gt;
        &lt;record id="user002" model="res&#46;users"&gt;
            &lt;field name="name"&gt;用户002&lt;/field&gt;
            &lt;field name="active"&gt;True&lt;/field&gt;
            &lt;field name="login"&gt;user002&lt;/field&gt;
            &lt;field name="password"&gt;user002&lt;/field&gt;
            &lt;field name="context_lang"&gt;zh_CN&lt;/field&gt;
            &lt;field name="action_id"&gt;1&lt;/field&gt;
            &lt;field name="menu_id"&gt;1&lt;/field&gt;
            &lt;field name="company_id"&gt;1&lt;/field&gt;
        &lt;/record&gt;
        &lt;record id="user003" model="res&#46;users"&gt;
            &lt;field name="name"&gt;用户003&lt;/field&gt;
            &lt;field name="active"&gt;True&lt;/field&gt;
            &lt;field name="login"&gt;user003&lt;/field&gt;
            &lt;field name="password"&gt;user003&lt;/field&gt;
            &lt;field name="context_lang"&gt;zh_CN&lt;/field&gt;
            &lt;field name="action_id"&gt;1&lt;/field&gt;
            &lt;field name="menu_id"&gt;1&lt;/field&gt;
            &lt;field name="company_id"&gt;1&lt;/field&gt;
        &lt;/record&gt;
        &lt;record id="user004" model="res&#46;users"&gt;
            &lt;field name="name"&gt;用户004&lt;/field&gt;
            &lt;field name="active"&gt;True&lt;/field&gt;
            &lt;field name="login"&gt;user004&lt;/field&gt;
            &lt;field name="password"&gt;user004&lt;/field&gt;
            &lt;field name="context_lang"&gt;zh_CN&lt;/field&gt;
            &lt;field name="action_id"&gt;1&lt;/field&gt;
            &lt;field name="menu_id"&gt;1&lt;/field&gt;
            &lt;field name="company_id"&gt;1&lt;/field&gt;
        &lt;/record&gt;
        &lt;!-- 用户定义 --&gt;
    
        &lt;!-- 员工定义 --&gt;
        &lt;record id="user001_employee" model="hr&#46;employee"&gt;
            &lt;field name="name"&gt;张一&lt;/field&gt;
            &lt;field name="user_id" ref="user001"/&gt;
        &lt;/record&gt;
        &lt;record id="user002_employee" model="hr&#46;employee"&gt;
            &lt;field name="name"&gt;张二&lt;/field&gt;
            &lt;field name="user_id" ref="user002"/&gt;
        &lt;/record&gt;
        &lt;record id="user003_employee" model="hr&#46;employee"&gt;
            &lt;field name="name"&gt;张三&lt;/field&gt;
            &lt;field name="user_id" ref="user003"/&gt;
        &lt;/record&gt;
        &lt;record id="user004_employee" model="hr&#46;employee"&gt;
            &lt;field name="name"&gt;张四&lt;/field&gt;
            &lt;field name="user_id" ref="user004"/&gt;
        &lt;/record&gt;
        &lt;!-- 员工定义 --&gt;
    
        &lt;!-- 部门定义 --&gt;
        &lt;record id="pm_001" model="hr&#46;department"&gt;
            &lt;field name="name"&gt;部门001&lt;/field&gt;
            &lt;field name="company_id" eval="1"/&gt;
            &lt;field name="manager_id" ref="user001"/&gt;
            &lt;field name="member_ids" eval="&#91;(6,0,&#91;ref('user001')&#93;"/&gt;
        &lt;/record&gt;
        &lt;record id="pm_002" model="hr&#46;department"&gt;
            &lt;field name="name"&gt;部门002&lt;/field&gt;
            &lt;field name="company_id" eval="1"/&gt;
            &lt;field name="manager_id" ref="user002"/&gt;
            &lt;field name="member_ids" eval="&#91;(6,0,&#91;ref('user002'), ref('user003'), ref('user004')&#93;"/&gt;
        &lt;/record&gt;
        &lt;!-- 部门定义 --&gt;
    
    &lt;/data&gt;
    

    </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]]



  • 因为新写的模块需要频繁地清空数据库, 并录入一些演示数据. 如人力资源里的员工信息, 部门信息.每次都要重复录入..很是麻烦.
    所以就写了一个 模块_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">

        &lt;!-- 用户定义 --&gt;
        &lt;record id="user001" model="res&#46;users"&gt;
            &lt;field name="name"&gt;用户001&lt;/field&gt;
            &lt;field name="active"&gt;True&lt;/field&gt;
            &lt;field name="login"&gt;user001&lt;/field&gt;
            &lt;field name="password"&gt;user001&lt;/field&gt;
            &lt;field name="context_lang"&gt;zh_CN&lt;/field&gt;
            &lt;field name="action_id"&gt;1&lt;/field&gt;
            &lt;field name="menu_id"&gt;1&lt;/field&gt;
            &lt;field name="company_id"&gt;1&lt;/field&gt;
        &lt;/record&gt;
        &lt;record id="user002" model="res&#46;users"&gt;
            &lt;field name="name"&gt;用户002&lt;/field&gt;
            &lt;field name="active"&gt;True&lt;/field&gt;
            &lt;field name="login"&gt;user002&lt;/field&gt;
            &lt;field name="password"&gt;user002&lt;/field&gt;
            &lt;field name="context_lang"&gt;zh_CN&lt;/field&gt;
            &lt;field name="action_id"&gt;1&lt;/field&gt;
            &lt;field name="menu_id"&gt;1&lt;/field&gt;
            &lt;field name="company_id"&gt;1&lt;/field&gt;
        &lt;/record&gt;
        &lt;record id="user003" model="res&#46;users"&gt;
            &lt;field name="name"&gt;用户003&lt;/field&gt;
            &lt;field name="active"&gt;True&lt;/field&gt;
            &lt;field name="login"&gt;user003&lt;/field&gt;
            &lt;field name="password"&gt;user003&lt;/field&gt;
            &lt;field name="context_lang"&gt;zh_CN&lt;/field&gt;
            &lt;field name="action_id"&gt;1&lt;/field&gt;
            &lt;field name="menu_id"&gt;1&lt;/field&gt;
            &lt;field name="company_id"&gt;1&lt;/field&gt;
        &lt;/record&gt;
        &lt;record id="user004" model="res&#46;users"&gt;
            &lt;field name="name"&gt;用户004&lt;/field&gt;
            &lt;field name="active"&gt;True&lt;/field&gt;
            &lt;field name="login"&gt;user004&lt;/field&gt;
            &lt;field name="password"&gt;user004&lt;/field&gt;
            &lt;field name="context_lang"&gt;zh_CN&lt;/field&gt;
            &lt;field name="action_id"&gt;1&lt;/field&gt;
            &lt;field name="menu_id"&gt;1&lt;/field&gt;
            &lt;field name="company_id"&gt;1&lt;/field&gt;
        &lt;/record&gt;
        &lt;!-- 用户定义 --&gt;
    
        &lt;!-- 员工定义 --&gt;
        &lt;record id="user001_employee" model="hr&#46;employee"&gt;
            &lt;field name="name"&gt;张一&lt;/field&gt;
            &lt;field name="user_id" ref="user001"/&gt;
        &lt;/record&gt;
        &lt;record id="user002_employee" model="hr&#46;employee"&gt;
            &lt;field name="name"&gt;张二&lt;/field&gt;
            &lt;field name="user_id" ref="user002"/&gt;
        &lt;/record&gt;
        &lt;record id="user003_employee" model="hr&#46;employee"&gt;
            &lt;field name="name"&gt;张三&lt;/field&gt;
            &lt;field name="user_id" ref="user003"/&gt;
        &lt;/record&gt;
        &lt;record id="user004_employee" model="hr&#46;employee"&gt;
            &lt;field name="name"&gt;张四&lt;/field&gt;
            &lt;field name="user_id" ref="user004"/&gt;
        &lt;/record&gt;
        &lt;!-- 员工定义 --&gt;
    
        &lt;!-- 部门定义 --&gt;
        &lt;record id="pm_001" model="hr&#46;department"&gt;
            &lt;field name="name"&gt;部门001&lt;/field&gt;
            &lt;field name="company_id" eval="1"/&gt;
            &lt;field name="manager_id" ref="user001"/&gt;
            &lt;field name="member_ids" eval="&#91;(6,0,&#91;ref('user001')&#93;"/&gt;
        &lt;/record&gt;
        &lt;record id="pm_002" model="hr&#46;department"&gt;
            &lt;field name="name"&gt;部门002&lt;/field&gt;
            &lt;field name="company_id" eval="1"/&gt;
            &lt;field name="manager_id" ref="user002"/&gt;
            &lt;field name="member_ids" eval="&#91;(6,0,&#91;ref('user002'), ref('user003'), ref('user004')&#93;"/&gt;
        &lt;/record&gt;
        &lt;!-- 部门定义 --&gt;
    
    &lt;/data&gt;
    

    </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]]


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待