Как импортировать данные в Odoo - Odoo 10.0

C чего начать

Вы можете импортировать данные в любой бизнес-объект Odoo, например контакты, товары, банковские выписки, записи в журнале и даже заказы, используя форматы Excel (.xlsx) или CSV (.csv):

Откройте представление объекта, который вы хотите заполнить, и нажмите Импорт.

Вам предоставляются шаблоны, которые вы легко можете заполнить своими собственными данными. Такие шаблоны можно импортировать одним щелчком мыши; Сопоставление данных уже выполнено.

Как подготовить шаблон

  • Вы можете добавлять, удалять и сортировать столбцы, для того, чтобы они соответствовали вашей структуре данных.

  • Мы советуем не удалять ID (см. почему в следующем разделе).

  • Установите уникальный ID для каждой записи путем последовательного переноса каждого из них.

  • Когда вы добавляете новый столбец, Odoo может не отображать его автоматически, если его метка не соответствует какому либо полю в Odoo. Не волнуйтесь! Вы можете сопоставить новые столбцы вручную, когда проверяете импорт. Найдите колонку с данными для соответствующего поля.

    Затем используйте метку этого поля в своем файле, чтобы он работал как нужно вам при каждом использовании.

Как импортировать данные из другого приложения

Чтобы воссоздать отношения между разными записями, вы должны использовать уникальный идентификатор из исходного приложения и сопоставить его с столбцом ID (External ID) в Odoo. Когда вы импортируете другую запись, которая ссылается на первую, используйте XXX/ID (XXX/External ID) для создания уникального идентификатора. Вы также можете найти эту запись, используя ее имя, но это будет проблемой, если хотя бы 2 записи имеют одинаковое имя.

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

Я не могу найти поле, в котором я хочу отобразить свою колонку

Odoo пытается найти при помощи эвристического анализа, основанного на первых десяти строках файлов, тип поля для каждого столбца вашего файла. Например, если у вас есть столбец, содержащий только числа, для вас будут отображаться только те поля, которые имеют тип Integer. Хотя в большинстве случаев это поведение может быть полезно, однако существует вероятность, что-то пойдет не так, или что вы хотите сопоставить свой столбец с полем, который не предлагается по умолчанию.

Если это произойдет, вам просто нужно проверить опцию Показывать поля как реляционные (дополнительно), тогда вы сможете выбрать из полного списка типов полей для каждого столбца.

Где я могу изменить формат даты для импорта?

Odoo может автоматически распознать, является ли тип данных столбца датой и попытается угадать формат числа из набора наиболее используемых временных форматов. Хотя этот процесс может работать для многих простых числовых форматов , всегда может найтись какой-то необычный числовой формат, который не будет распознаваться, а также может возникнуть путаница (пример день и месяц перевернуты), так как трудно правильно угадать, какая часть является днем, а какая из них - месяц в такой дате, как '01-03-2016'

Чтобы узнать, какой формат даты установила Odoo в вашем файле, вы можете проверить Формат даты, который отображается при нажатии на Параметры под селектором файлов. Если этот формат неверен, вы можете изменить его по своему усмотрению, используя стандарт ISO 8601, чтобы определить формат.

Могу ли я импортировать числа со знаком валюты (например: $32,00)?

Да, мы полностью поддерживаем цифры с круглыми скобками, отрицательным знаком, а также числа со знаком валюты. Odoo также автоматически определяет, формат тысячных разделителей и разделителей дробной части (вы можете изменить их в опциях). Если вы используете символ валюты, неизвестный Odoo, то число будет не распознано, в следствии чего произойдет аварийное завершение.

Примеры поддерживаемых форматов чисел (на примере тридцати двух тысяч):

  • 32.000,00
  • 32000,00
  • 32,000.00
  • -32000,00

  • (32000.00)
  • $ 32 000,00

  • (32000.00 €)

Пример, который не будет работать:

  • ABC 32 000,00

  • $ (32.000,00)

Что делать, если при импорте таблица предварительного просмотра отображается неправильно?

По умолчанию в предварительном просмотре разделители столбцов формируются запятыми, а разделители текста кавычки. Если ваш файл csv не имеет этих параметров, вы можете изменить параметры формата файла (отображается в разделе «Обзор файла CSV» после выбора файла).

Обратите внимание, что если ваш CSV-файл имеет табуляцию в качестве разделителя, Odoo не обнаружит разделения. Вам нужно будет изменить параметры формата файла в приложении для работы с электронными таблицами. См. Следующий вопрос.

Как изменить параметры формата файла CSV при сохранении в приложении для работы с электронной таблицей?

Если вы отредактируете и сохраните CSV-файлы в приложениях для электронных таблиц, региональные настройки вашего компьютера будут применены для разделителя колонок и разделителя строк. Мы предлагаем вам использовать OpenOffice или LibreOffice Calc, поскольку они позволят вам изменить все три параметра (в диалоговом окне «Сохранить как»). Установите флажок «Изменить настройки фильтра»> «Сохранить»).

Microsoft Excel позволит вам изменять только кодировку при сохранении (в диалоговом окне «Сохранить как»> щелкните раскрывающийся список «Инструменты»> вкладка «Кодировка»).

В чем разница между Database ID и External ID?

Некоторые поля определяют отношения с другим объектом. Например, страна в записи контакта - это ссылка на запись объекта «Страна». Когда вы хотите импортировать такие поля, Odoo придется воссоздавать ссылки между разными записями. Чтобы помочь вам импортировать такие поля, Odoo предоставляет 3 механизма. Вы должны использовать один и только один механизм для каждого поля, которое вы хотите импортировать.

Например, чтобы указать страну контакта, Odoo предлагает вам 3 разных поля для импорта:

  • Country: название или код страны

  • Country/Database ID: уникальный идентификатор Odoo для записи, определяемый столбцом postgresql ID

  • Country/External ID: идентификатор этой записи, на который ссылается другое приложение (или файл .XML, который его импортировал)

Для страны Бельгия вы можете использовать один из этих трех способов импорта:

  • Country: Belgium
  • Country/Database ID: 21
  • Country/External ID: base.be

Исходя из ваших потребностей вы должны использовать один из этих трех способов записи ссылок:

  • Использовать Country. Это самый простой способ, когда ваши данные поступают из CSV файлов , созданных вручную.

  • Использовать Country/Database ID: Вам вряд ли пригодится такая нотация. В основном ее используют разработчики, поскольку главным преимуществом является отсутствие конфликтов (у вас может быть несколько записей с тем же именем, но у них всегда есть уникальный Database ID)

  • Использовать Country/External ID: Используйте External ID при импорте данных из стороннего приложения.

Когда вы используете External ID, вы можете импортировать CSV-файлы со столбцом «External ID», чтобы определить внешний идентификатор каждой импортируемой вами записи. Затем вы сможете сделать ссылку на эту запись с такими столбцами, как «Поле/External ID». Следующие два файла CSV дают вам пример для продуктов и их категорий.

CSV файл для категорий товаров.

CSV файл для товаров.

Что делать, если у меня есть несколько совпадений для одного поля?

Если, например, у вас есть две категории товаров с именем «Продаваемое» (например, «Разное/Продаваемое» и «Другие продукты/Продаваемое»), ваша проверка приостанавливается, но вы все равно можете импортировать свои данные. Тем не менее, мы рекомендуем вам не импортировать данные, потому что все они будут связаны с первой категорией «Продаваемое», указанной в списке «Категория продуктов» («Разное/Продаваемое»). Мы рекомендуем вам изменить одно из значений дубликатов или иерархию категорий продуктов.

Однако, если вы не хотите изменять конфигурацию категорий продуктов, мы рекомендуем использовать External ID для поля '«Категория»'.

Как импортировать поле many2many (например клиент с несколькими тегами)?

Теги должны быть разделены запятой без какого-либо интервала. Например, если вы хотите, чтобы ваш клиент был связан с обоими тегами «Производитель» и «Продавец», вы должны записать это следующим образом «Производитель,Продавец» в том же столбце вашего CSV-файла.

CSV файл для Производитель,Продавец.

Как я могу импортировать поля one2many (например несколько позиций заказа клиента)?

Если вы хотите импортировать заказ клиента с несколькими позициями; Для каждой позиции вам нужно зарезервировать определенную строку в файле CSV. Первая позиция будет импортирована в той же строке, что и остальная информация о заказе. Каждая дополнительная позиция потребует строку, которая не имеет никакой информации в полях о заказе. В качестве примера можно привести файл purchase.order_functional_error_line_cant_adpat.CSV файл содержит данные, которые вы можете импортировать на основе демо-данных.

Файл.

В следующем файле CSV показано, как импортировать заказы с позициями:

Заказ с позициями.

Следующий файл CSV показывает, как импортировать клиентов и их контакты:

Клиенты и их контакты.

Могу ли я импортировать несколько раз одну и ту же запись?

Если вы импортируете файл, содержащий один из столбцов «External ID» или «Database ID» то, записи, которые уже были импортированы, будут обновлены а не созданы заново. Это очень полезно, так как позволяет вам импортировать несколько раз один и тот же файл CSV, сделав некоторые изменения. Odoo будет заботиться о создании или изменении каждой записи в зависимости от того новая она или нет.

Эта функция позволяет вам использовать инструмент импорта/экспорта Odoo для групповых изменений записей в вашем любимом приложении для электронных таблиц.

Что произойдет, если я не предоставил значение для определенного поля?

Если вы не установите все поля в CSV-файле, Odoo присвоит значение по умолчанию для каждого не определенного поля. Но если вы установите поля с пустыми значениями в CSV-файле, Odoo установит значение "СВОБОДНО" в поле вместо значения по умолчанию.

Как экспортировать/импортировать различные таблицы из приложения SQL в Odoo?

Если вам нужно импортировать данные из разных таблиц, вам придется воссоздавать отношения между записями, принадлежащими разным таблицам. (например, если вы импортируете компании и их сотрудников, вам придется воссоздать связь между каждым человеком и компанией, в которой они работают).

Чтобы управлять отношениями между таблицами, вы можете использовать средства «External ID» для Odoo. «External ID» запись является уникальным идентификатором этой записи в другом приложении. Этот «External ID» должен быть уникальным для всех записей всех объектов, поэтому рекомендуется использовать этот «External ID» с именем приложения или таблицы. (Например, 'company_1', 'person_1' вместо '1')

В качестве примера предположим, что у вас есть база данных SQL с двумя таблицами, которые вы хотите импортировать: компании и сотрудники. Каждый человек принадлежит одной компании, поэтому вам придется воссоздать связь между человеком и компанией, в которой он работает. (Если вы хотите проверить этот пример, вот дамп PostgreSQL базы)

Сначала мы экспортируем все компании и их «External ID». В PSQL напишите следующую команду:

> copy (select 'company_'||id as "External ID",company_name as "Name",'True' as "Is a Company" from companies) TO '/tmp/company.csv' with CSV HEADER;

Эта SQL команда создаст следующий CSV файл:

External ID,Name,Is a Company
company_1,Bigees,True
company_2,Organi,True
company_3,Boum,True

Чтобы создать файл CSV для сотрудников, связанных с компаниями, мы будем использовать следующую SQL команду в PSQL:

> copy (select 'person_'||id as "External ID",person_name as "Name",'False' as "Is a Company",'company_'||company_id as "Related Company/External ID" from persons) TO '/tmp/person.csv' with CSV

Он создаст следующий CSV файл:

External ID,Name,Is a Company,Related Company/External ID
person_1,Fabien,False,company_1
person_2,Laurence,False,company_1
person_3,Eric,False,company_2
person_4,Ramsy,False,company_3

Как вы можете видеть в этом файле, Fabien и Laurence работают в компании Bigees (company_1), а Eric работает в компании Organi. Связь между людьми и компаниями осуществляется с использованием External ID компаний. Мы должны были создать префикс «External ID» по имени таблицы, чтобы избежать конфликта идентификаторов между людьми и компаниями (person_1 и company_1, которые имеют один и тот же ID 1 в базе данных).

Эти два файла готовы для импорта в Odoo без каких-либо изменений. После импорта этих двух файлов CSV у вас будет 4 контакта и 3 компании. (Первые два контакта связаны с первой компанией). Сначала вы должны импортировать компании, а затем людей.