【问题标题】:How to get current company id odoo 15?如何获得当前的公司 id odoo 15?
【发布时间】:2022-06-11 06:53:06
【问题描述】:

我试过这个:

[('company_id','=',company_id)]

self.env.company_id

self.env.user.company_id

但这三种方式都会导致默认公司,而不是当前公司。

请帮忙,谢谢。

【问题讨论】:

  • 签到self.env.context
  • @MuhammadYusuf 先生,有没有在记录规则域内调用self.env.context
  • 是的,试试这样的<field name="domain">[('company_id','in',context.get('allowed_company_ids'))]</field>[('company_id', '=', context.get('company_id'))]
  • @MuhammadYusuf 不工作先生,它说ValueError: <class 'NameError'>: "name 'context' is not defined" while evaluating "[('company_id','in',context.get('allowed_company_ids'))]"
  • 抱歉,在记录规则中不会有上下文将是 ir.rule 中的活动模型,您可以使用 ` [('company_id','=' ,[user.company_id.id])] `

标签: odoo odoo-15


【解决方案1】:

我建议创建一个指向当前公司的related 字段,或者只是创建一个新的存储计算字段show_field_XY。在 _compute 方法中,您可以像这样访问上下文:

self.env.context.get('company_id')

最后,只需访问域中的该字段,您就可以开始了。

【讨论】:

  • 感谢您的评论,我会尽快回复
  • 先生,我已经尝试过您的解决方案,但是使用诸如['|',('company_id','=',company_id),('company_id','=',False)] 之类的记录规则域,您如何称呼该新字段?比如我们定义了那个字段是“current_company”,怎么调用呢?我们不能设置('company_id','=','current_company')
  • 您需要删除引号:('company_id','=',current_company)。还可以使用<field name="current_company"/> 添加字段本身(如果您愿意,可以使其不可见)。如果仍然不起作用,还要确保计算该字段。
【解决方案2】:

试试这个

current_company = self.env.user.company_id

【讨论】:

  • 先生,你在哪里用这个?
  • 我正在尝试在记录规则域中获取当前公司,它是 xml 文件。
【解决方案3】:

正如我所检查的,如果我们使用上下文来获取当前公司,并且如果我们使用多公司,我们只能获取第一个公司。

在这种情况下,我们应该使用 company_ids 来获取用户的所有公司。

例子:

['|',('company_id','in',company_ids),('company_id','=',False)]

希望对你有所帮助。

【讨论】:

    【解决方案4】:

    你试过self.env.company 吗?您可以使用单独的字段来确定这一点并在您的 xml 中使用它..

    active_company_id = fields.Many2one(
            "res.company",
            string="Company",
            default=lambda self: self.env.company,
        )
    

    【讨论】:

      【解决方案5】:

      您应该为您的模块创建记录规则,如下所示, 并确保在您的班级模型中您已经设置了company_id

      <!-- Rules --><record id="yourmodullid_comp_rule" model="ir.rule"><field name="name">""" multi-company</field><field name="model_id" ref="model_yourmodel" /><field name="domain_force">['|',('company_id', 'in', company_ids),('company_id','=',False)]</field></record><!-- ___________ -->
      

      【讨论】:

        【解决方案6】:

        在 xml 中,试试这个:

        user.company_id
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多