我正在尝试用读取公司数据
for company in self.pool('res.company').browse(cr, uid, uid):
company.vat <=== code breaks here
如果我使用管理员(uid 1)帐户,我会看到company.vt。但如果我使用任何其他帐户(具有res.company权限),我会收到一条消息:"您试图访问的一个文档已被删除…"
这是权限问题还是某种编码错误?请注意,如果我硬编码1而不是uid作为浏览函数的参数,它就可以工作了。
感谢
- 首先,如果你的odoo中只有一家公司,默认情况下,当你创建时,它将以id"1"创建
- 您可以使用"Administrator"访问该记录,因为管理员用户的id也是"1"。因此,这导致browse(cr,uid,uid)被(cr,1,1)取代。由于管理员的uid="1",并且只有公司记录的id也是"1"
3.当你使用不同的用户登录时,uid不会是"1"。因此,在这种情况下,您无法使用uid读取该公司,因为('uid!=1','company_id=1')不匹配。在这种情况下,您可能会收到类似"您试图访问的某个文档已被删除"的错误
4.所以你要做一件事,首先执行一个搜索操作,这将产生company_id,然后通过读取公司来重复for循环
company_pool = self.pool.get("res.company") company_ids = company_pool.search(cr, uid, []) for company in company_pool.browse(cr, uid, company_ids): company.vat
试试这个
from openerp import SUPERUSER_ID
self.pool('res.company').browse(cr, SUPERUSER_ID, uid)