在odoo 9中,我在模型mrp.production上添加了一条记录规则:
['|', ('user_id', '=', user.id), ('user_id', '=', False)]
这将仅向用户显示属于他们的MO。现在,当我试图确认销售订单,然后将为该销售订单中的行创建MO时,我收到的访问错误为:
The requested operation cannot be completed due to security restrictions. Please contact your system administrator.
(Document type: mrp.production, Operation: read)
诊断更多我发现它是由于missing_ids引起的。看看this。
在此之前,我在openerp 7中使用了相同的解决方案,并且在确认SO时它仍然完美无任何访问错误。
答案 0 :(得分:0)
您正在尝试的是哪个用户?我认为您正在尝试使用管理员登录,并且您编写了安全规则,只有该记录的用户才能访问该规则。我认为这就是问题。
答案 1 :(得分:0)
最后我找到了这个问题的原因。
在opernep / addons / mrp / procurement.py中有行
production_obj.create(cr, SUPERUSER_ID, vals, context=dict(context, force_company=procurement.company_id.id))
使用SUPERUSER_ID从采购中创建生产订单。
我不知道为什么他们改变它以使用SUPERUSER_ID。可能是为了使非mrp用户或外部用户能够创建mrp命令,即使他们没有权限也是如此。顺便说一下,我没有这样的要求,我用uid替换了这个SUPERUSER_ID解决了我的问题。