跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 关于人力资源初始化时可以使用的 xml 导入数据模板.

关于人力资源初始化时可以使用的 xml 导入数据模板.

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
2 帖子 1 发布者 4.9k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • mrshellyM 离线
    mrshellyM 离线
    mrshelly
    写于 最后由 编辑
    #1

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

    1 条回复 最后回复
    0

    • 登录

    • 没有帐号? 注册

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组