Openerp Can';t应用记录规则后确认销售订单

Openerp Can';t应用记录规则后确认销售订单,openerp,openerp-7,Openerp,Openerp 7,在odoo 9中,我在mrp.production模型上添加了一条记录规则,如下所示: ['|', ('user_id', '=', user.id), ('user_id', '=', False)] 这将仅向用户显示属于他们的MOs。现在,当我尝试确认销售订单时,将为该销售订单中的行创建一个生产任务单,我得到一个访问错误,如下所示: The requested operation cannot be completed due to security restrictions. Pleas

在odoo 9中,我在mrp.production模型上添加了一条记录规则,如下所示:

['|', ('user_id', '=', user.id), ('user_id', '=', False)]
这将仅向用户显示属于他们的MOs。现在,当我尝试确认销售订单时,将为该销售订单中的行创建一个生产任务单,我得到一个访问错误,如下所示:

The requested operation cannot be completed due to security restrictions. Please contact your system administrator.

(Document type: mrp.production, Operation: read) 
诊断更多我发现这是由于缺少_id造成的。看一看


在此之前,我在OpenERP7中使用了相同的解决方案,它仍然可以完美地工作,没有任何访问错误

您正在从哪个用户尝试?我认为您正在尝试使用管理员登录,并且您编写了只有该记录的用户才能访问该记录的安全规则。我想这就是问题所在。

我终于找到了这个问题的原因

在opernep/addons/mrp/procurement.py中有一行

production_obj.create(cr, SUPERUSER_ID, vals, context=dict(context, force_company=procurement.company_id.id))
它使用超级用户_ID从采购中创建生产订单

我不知道他们为什么改为使用超级用户ID。可能是为了让非mrp用户或外部用户创建mrp订单,即使他们没有权限。顺便说一句,我没有这样的要求,我用uid替换了这个超级用户ID,解决了我的问题