После многих попыток я нашел решение. Он не идеален из-за разделителя ячеек: граница исчезает, поэтому мне пришлось повторить ее с CSS, и она не так высока, как исходная. Но это выглядит не очень плохо, достаточно для моей ситуации.
<group>
<group name="xxx">
<field name="conditional_field" invisible="1"/>
<div class="o_form_label" style="border-right:0.8px solid #ddd; width:101%;">
<label for="main_field" string="AAA" attrs="{'invisible': [('conditional_field', '!=', 'A')]}" style="font-weight:bold;"/>
<label for="main_field" string="BBB" attrs="{'invisible': [('conditional_field', '!=', 'B')]}" style="font-weight:bold;"/>
</div>
<field name="main_field" nolabel="1" style="padding-left:8px;"/>
</field>
</group>
</group>
Очевидно, что стили CSS будут меняться в зависимости от того, в какой части формы вы размещаете метку в, Например, если вы хотите сделать это в разделе счета-фактуры classi c, заказы и т. Д. c. это будет код:
<group class="oe_subtotal_footer oe_right">
<field name="conditional_field" invisible="1"/>
<div class="oe_right">
<label for="main_field" string="AAA" attrs="{'invisible': [('conditional_field', '!=', 'A')]}" style="font-weight:bold; margin:0;"/>
<label for="main_field" string="BBB" attrs="{'invisible': [('conditional_field', '!=', 'B')]}" style="font-weight:bold; margin:0;"/>
</div>
<field name="main_field" nolabel="1"/>
</group>
В любом случае, если кто-то найдет лучшее решение, я изменю принятый ответ и дам его им.