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

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

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

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

关于结合人力资源模块利用domain设置角色权限问题总结



  • OE中的domain很牛也很可恶,没有什么很详细的说明
    我测试的结果:
    'a'='b' 这个条件中,
    a可以是本对象字段,也可以是字段many2one对应的,例如常见的oecn_training_lesson中,teacher为many2one 对应res.users,
    那么公式可以这样写:[( 'teacher.login' ,'=','admin')]  意思就是 记录中老师的登录名为admin的记录列出来,注意在a为变量时, 是需要这样'a' 引号的
    b 加引号 'b' 时,是固定值,例如上面的 'admin'
    b 也可以使用变量,例如 user.name 则为当前用户的名字,那么上面公式可以为 [( 'teacher.login','=', user.name)],也就是老师登录名是当前用户名字的记录
    综合上面的情况,求证 销售一部经理,只能看到本部门数据的 情况
    为:[('user_id','in', [workmate.user_id.id  for workmate in user.employee_ids[0].department_id.member_ids])]
    说明:
    1.需要对象中要有user_id字段,虽然默认oe都有create_uid这个字段,但在columns中木定义,这里使用不行,会报错,奇怪,可我用[('create_uid','=',user.id)]时可以,鬼知道为什么
    2. user.employee_ids[0].department_id.member_ids 意思是,当前用户对应的hr中的员工的部门的成员
    (OE,一个登陆帐号,可以对应多个企业员工,这里只取第一个,也就是最好一个帐号就对应一个员工)
    那么上面的意思就是 查出 记录的归属者是当前用户的同事的记录
    这种做法可能有那么点别扭,可不用写代码就可以完成,还算凑合




  • OE中的domain很牛也很可恶,没有什么很详细的说明
    我测试的结果:
    'a'='b' 这个条件中,
    a可以是本对象字段,也可以是字段many2one对应的,例如常见的oecn_training_lesson中,teacher为many2one 对应res.users,
    那么公式可以这样写:[( 'teacher.login' ,'=','admin')]  意思就是 记录中老师的登录名为admin的记录列出来,注意在a为变量时, 是需要这样'a' 引号的
    b 加引号 'b' 时,是固定值,例如上面的 'admin'
    b 也可以使用变量,例如 user.name 则为当前用户的名字,那么上面公式可以为 [( 'teacher.login','=', user.name)],也就是老师登录名是当前用户名字的记录
    综合上面的情况,求证 销售一部经理,只能看到本部门数据的 情况
    为:[('user_id','in', [workmate.user_id.id  for workmate in user.employee_ids[0].department_id.member_ids])]
    说明:
    1.需要对象中要有user_id字段,虽然默认oe都有create_uid这个字段,但在columns中木定义,这里使用不行,会报错,奇怪,可我用[('create_uid','=',user.id)]时可以,鬼知道为什么
    2. user.employee_ids[0].department_id.member_ids 意思是,当前用户对应的hr中的员工的部门的成员
    (OE,一个登陆帐号,可以对应多个企业员工,这里只取第一个,也就是最好一个帐号就对应一个员工)
    那么上面的意思就是 查出 记录的归属者是当前用户的同事的记录
    这种做法可能有那么点别扭,可不用写代码就可以完成,还算凑合




  • 不错, 你试试在 columns 再显式定义一下 create_uid



  • 暂时没考虑部门级别问题,比如上级部门查看下级部门的数据,OE的人员只能属于一个HR部门
    如果可以定义变量类似user这样的
    那么可以定义一个我管辖的用户这样一个变量列表,在[('user_id','in',我管辖的用户)] 这样比较合适
    一直不知道如何去定义这样一个变量
    在column中定义'context_department_id': fields.function(_get_self_department_ids,type="hr.department"), 类似这样定义部门,这个department_id好像也不能用在domain中,但从浏览器上确实看到department_id的值在前台的params中,每次post到后台时,都会把这个department_id送到OE-server,
    而且这个department_id函数定义返回的结果是可定义的字段类型,没有[1,2,3]这种列表方式,也不好在domian中用in去处理


登录后回复
 

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