Одоо. Импорт данных с отношениями

Мне нужно импортировать сотрудников (объект hr.employee) из xml и связать их с пользователями (объект res.users) и контактами (res.partner). > объект). Отношения с работой пользователя хорошие (экран ниже после импорта).

введите здесь описание изображения

Но у меня проблема с контактами. Когда система импортирует пользователя, она автоматически создает новый контакт, который применяется к пользователю. Как мне привязать этот контакт к сотруднику, если я не знаю ID?

введите здесь описание изображения

Я попытался добавить запись контакта в файл xml и установить отношения. Но в этом случае система создает 2 контакта. И один из них не связан с пользователем.

Вот мой xml для импорта из моего модуля.

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data noupdate="1">
        <record id="user_test" model="res.users">
            <field name="name">My Name</field>
            <field name="login">my_name</field>
            <field name="password">1111</field>
        </record>
        <!-- I tried create contact like this...
             but then will be created 2 contacts
             instead 1 + one of them is not related with user -->

        <!--<record id="contact_test" model="res.partner">-->
            <!--<field name="name">My Name</field>-->
            <!--<field name="user_id" ref="user_test"/>-->
        <!--</record>-->
        <record id="employee_test" model="hr.employee">
            <field name="name">My Name</field>
            <field name="work_email">[email protected]</field>
            <field name="user_id" ref="user_test"/>
        </record>
    </data>
</openerp>

Итак, мой вопрос: как я могу установить контакт (который был создан автоматически от пользователя) для сотрудника?


person Danila Ganchar    schedule 12.11.2015    source источник
comment
Вы пытались сначала создать партнера в xml, а затем пользователя? просто добавьте ‹поле name=partner_id ref =contact_test/›. Убедитесь, что пользователь находится под партнером.   -  person dccdany    schedule 12.11.2015
comment
Ничего не изменилось. Но в данном случае был создан 1 контакт, а не 2.   -  person Danila Ganchar    schedule 12.11.2015
comment
И как создается связь между пользователем и контактом? Я имею в виду, что у пользователя должен быть связан 1 контакт, он новый?   -  person dccdany    schedule 12.11.2015
comment
Я думаю, user_id. Потому что я не могу удалить контакт из графического интерфейса. Я получаю ошибку: The operation cannot be completed, probably due to the following: - deletion: you may be trying to delete a record while other records still reference it - creation/update: a mandatory field is not correctly set. [Object with link: Users - res.users]   -  person Danila Ganchar    schedule 12.11.2015
comment
Можно после определения добавить какие-то значения в поля? Я имею в виду, здесь одна запись: <record id="contact_my_name" model="res.partner"> <field name="name">My Name</field> </record>. Можно ли добавить какие-то значения в эту запись после тега ‹/record›?   -  person Danila Ganchar    schedule 12.11.2015


Ответы (2)


Попробуй это:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data noupdate="1">

        <record id="contact_test" model="res.partner">
            <field name="name">My Name</field>
        </record>

        <record id="user_test" model="res.users">
            <field name="name">My Name</field>
            <field name="login">my_name</field>
            <field name="password">1111</field>
            <field name="partner_id ref="contact_test"/>
        </record>

        <record id="employee_test" model="hr.employee">
            <field name="name">My Name</field>
            <field name="work_email">[email protected]</field>
            <field name="user_id" ref="user_test"/>
            <field name="partner_id" ref="contact_test"/>
        </record>
    </data>
</openerp>
person dccdany    schedule 12.11.2015

Здесь решение:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data noupdate="1">
        <!-- at first create contact -->
        <record id="contact_test" model="res.partner">
            <field name="name">My Name</field>
        </record>
        <record id="user_test" model="res.users">
            <field name="name">My Name</field>
            <field name="login">my_name</field>
            <field name="password">1111</field>
            <!-- relation between user and contact -->
            <field name="partner_id" ref="contact_test"/>
        </record>
        <record id="employee_test" model="hr.employee">
            <field name="name">My Name</field>
            <field name="work_email">[email protected]</field>
            <field name="user_id" ref="user_test"/>
            <!-- relation employee and contact -->
            <field name="address_home_id" ref="contact_test"/>
        </record>
    </data>
</openerp>

В этом случае будет создан 1 контакт, 1 пользователь и 1 сотрудник. Сотрудник будет иметь отношение с контактом.

person Danila Ganchar    schedule 12.11.2015
comment
Просто прокомментировал, как вы, но с partner_id вместо address_home_id (не знал имя поля). - person dccdany; 12.11.2015
comment
@DanielCrocco спасибо. Вы очень помогли решить мою проблему. - person Danila Ganchar; 12.11.2015