Odoo 中文社区

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    • Users
    • Groups

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

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

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

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

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

    Odoo 开发与实施交流
    1
    2
    4790
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • mrshelly
      mrshelly last edited by

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