Элемент xpath не может быть расположен в родительском представлении - PullRequest
0 голосов
/ 16 января 2019

Мне нужно настроить поля для печати из модуля rapport of sale, поэтому я создал новый модуль и установил его. Я создал файл XML, но у меня есть эта ошибка:

odoo.tools.convert.ParseError: "Error while validating constraint

Element '<xpath expr="//table[@class='table table-condensed']//thead//tr">' cannot be located in parent view

Error context:
View `report_quotation_inherit_demo`
[view_id: 1603, xml_id: n/a, model: n/a, parent_id: 649]
None" while parsing None:5, near
<data inherit_id="sale.report_saleorder_document">
        <!-- Finds the first table with as class table table-condensed and gives the ability to modify it
         This will replace everything withing tr (including tr)-->
        <xpath expr="//table[@class='table table-condensed']//thead//tr" position="replace">
                    <tr style="background-color:lightgray;">
                        <th>Description</th>
                        <th class="text-right">Price</th>
                    </tr>
        </xpath>
        <!-- This will search for the 4'th td element (in the tbody with class sale_tbody) and will remove it. -->
        <!-- Important: if you would start with element 2, then do 3 and then do 4 you will see strange behaviour.
            The first statement would remove element 2 making all other elements move in numbering too. -->
        <xpath expr="//tbody[@class='sale_tbody']//tr//td[4]" position="replace">
        </xpath>
        <xpath expr="//tbody[@class='sale_tbody']//tr//td[3]" position="replace">
        </xpath>
        <xpath expr="//tbody[@class='sale_tbody']//tr//td[2]" position="replace">
        </xpath>
        </data>

1 Ответ

0 голосов
/ 18 января 2019

Вы не предоставили полное определение представления, поэтому я не уверен, что это проблема, но, похоже, вам просто нужно изменить способ использования выражений xpath.

При использовании xpath ваш expr должен начинаться с // (что сокращенно для /sheet/). Любые дополнительные элементы должны быть разделены одним /.

# Instead of
# <xpath expr="//table[@class='table table-condensed']//thead//tr">
# Try using
 <xpath expr="//table[@class='table table-condensed']/thead/tr">

Вам нужно будет обновить все ваши xpath выражения, которые используют // между элементами.

Вы можете посмотреть эту документацию для базового примера.

Некоторые более сложные примеры можно найти в исходном коде Odoo .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...