Експорт та імпорт даних

В Odoo іноді потрібно експортувати або імпортувати дані для формування звітів або зміни даних. Цей документ охоплює експорт та імпорт даних в Odoo та з нього.

Важливо

Іноді користувачі стикаються з помилкою «тайм-аут» або запис не обробляється через його розмір. Це може статися при великих експортах або у випадках, коли файл імпорту занадто великий. Щоб обійти це обмеження щодо розміру записів, обробляйте експорт або імпорт меншими пакетами.

Експорт даних з Odoo

Під час роботи з базою даних іноді потрібно експортувати дані в окремий файл. Це може допомогти у формуванні звітів про діяльність, хоча Odoo надає точний інструмент звітності для кожного доступного застосунку.

З Odoo можна експортувати значення з будь-якого поля в будь-якому записі. Для цього активуйте перегляд списку (List) для елементів, які потрібно експортувати, а потім виберіть записи, що мають бути експортовані. Щоб вибрати запис, поставте позначку біля відповідного запису. Нарешті, натисніть кнопку Action і виберіть Export.

Вигляд різних елементів, які потрібно увімкнути/натиснути для експорту даних.

Після натискання на Export з’являється спливаюче вікно Export Data з кількома параметрами для експорту даних:

Огляд параметрів, які слід враховувати при експорті даних в Odoo.
  1. Якщо позначено параметр I want to update data (import-compatable export), система показує лише ті поля, які можна імпортувати. Це корисно у випадку, коли потрібно оновити наявні записи. Це працює як фільтр. Якщо залишити поле без позначки, з’явиться набагато більше варіантів полів, оскільки відображатимуться всі поля, а не лише ті, які можна імпортувати.

  2. При експорті є можливість експортувати в двох форматах: .csv та .xls. У .csv елементи розділені комою, тоді як .xls зберігає інформацію про всі аркуші у файлі, включно зі вмістом та форматуванням.

  3. Це елементи, які можна експортувати. Використовуйте значок (Show sub-fields), щоб відобразити більше варіантів підполів. Використовуйте рядок Search, щоб знайти конкретні поля. Для більш ефективного використання функції Search натисніть усі значки (Show sub-fields), щоб відобразити всі поля.

  4. Кнопка-значок (Select field) призначена для додавання полів до списку Fields to export.

  5. Значок (Sort) ліворуч від вибраних полів можна використовувати для переміщення полів вгору і вниз, щоб змінити порядок їх відображення в експортованому файлі. Перетягніть за допомогою значка (Sort).

  6. Значок (Remove field) використовується для видалення полів. Натисніть значок (Remove field), щоб видалити поле.

  7. Для повторюваних звітів корисно зберігати шаблони експорту. Виберіть усі потрібні поля і натисніть на спадне меню шаблонів. Потім натисніть New template і надайте унікальну назву шаблону експорту. Натисніть значок (floppy drive), щоб зберегти конфігурацію. Наступного разу, коли потрібно буде експортувати той самий список, виберіть відповідний шаблон, який було раніше збережено, зі спадного меню.

Порада

Корисно знати зовнішній ідентифікатор поля. Наприклад, Пов’язана компанія в інтерфейсі експорту користувача дорівнює parent_id (зовнішній ідентифікатор). Це корисно, оскільки тоді експортуються лише ті дані, які потрібно змінити та повторно імпортувати.

Імпорт даних в Odoo

Імпорт даних в Odoo надзвичайно корисний під час впровадження або у випадках, коли дані потрібно оновити масово. Наступна документація охоплює імпорт даних в базу даних Odoo.

Попередження

Імпорт є остаточним і не може бути скасований. Однак можна використовувати фільтри (створено або остання зміна) для визначення записів, змінених або створених під час імпорту.

Порада

Активація режиму розробника змінює видимі налаштування імпорту в лівому меню. Це відкриває меню Розширені. До цього розширеного меню входять два параметри: Відстежувати історію під час імпорту та Дозволити збіг з підполями.

Розширені параметри імпорту при активованому режимі розробника.

Якщо модель використовує openchatter, параметр Відстежувати історію під час імпорту налаштовує підписки та надсилає сповіщення під час імпорту, але призводить до повільнішого імпорту.

Якщо вибрано параметр Дозволити збіг з підполями, то всі підполя в межах поля використовуються для збігу під Поле Odoo під час імпорту.

Розпочніть

Дані можна імпортувати в будь-який бізнес-об’єкт Odoo, використовуючи формати Excel (.xlsx) або CSV (.csv). Це включає: контакти, продукти, банківські виписки, проводки журналу та замовлення.

Відкрийте перегляд об’єкта, до якого мають бути імпортовані/заповнені дані, натисніть значок (Action), а в спадному меню виберіть (Import records).

Меню дій відкрито з виділеним параметром імпорту записів.

Натисніть Import Template for Customers у центрі сторінки, щоб завантажити шаблон і заповнити його власними даними компанії. Такі шаблони можна імпортувати одним клацанням, оскільки зіставлення даних уже попередньо налаштоване.

Щоб завантажити завантажений шаблон або наявний файл, виконайте наступні кроки:

  1. Натисніть Завантажити файл даних та виберіть потрібний файл.

  2. Налаштуйте параметри Форматування за потреби (тільки для CSV-файлів).

  3. Переконайтеся, що всі дані в Стовпці файлу правильно зіставлено з відповідним Полем Odoo і не містять помилок.

  4. (Необов’язково) Натисніть Завантажити файл даних, щоб перезавантажити той самий файл або завантажити інший.

  5. Натисніть Тест, щоб перевірити правильність даних.

  6. Натисніть Імпортувати.

Примітка

Параметри Форматування не з’являються під час імпорту файлів власного формату Excel (тобто .xls або .xlsx).

Адаптація шаблону

Шаблони імпорту надаються в інструменті імпорту для найпоширеніших даних (контакти, товари, банківські виписки тощо). Відкрийте їх у будь-якому табличному редакторі (Microsoft Office, OpenOffice, Google Drive тощо).

Після завантаження шаблону виконайте такі кроки:

  • Додайте, видаліть і відсортуйте стовпці відповідно до структури даних.

  • Наполегливо рекомендується не видаляти стовпець Зовнішній ID (ID) (причину дивіться в наступному розділі).

  • Призначте унікальний ID кожному запису, перетягнувши послідовність ID у стовпці Зовнішній ID (ID).

Анімація перетягування мишею стовпця ID, щоб кожен запис мав унікальний ID.

Примітка

Коли додається новий стовпець, Odoo може не зіставити його автоматично, якщо його назва не відповідає жодному полю в Odoo. Однак нові стовпці можна зіставити вручну під час тестування імпорту. Знайдіть відповідне поле у спадному меню.

Розгорнуте спадне меню на початковому екрані імпорту в Odoo.

Потім використовуйте назву цього поля у файлі імпорту, щоб забезпечити успішність майбутніх імпортів.

Порада

Іншим корисним способом з’ясувати правильні назви стовпців для імпорту є експорт зразка файлу з використанням полів, які потрібно імпортувати. Таким чином, якщо немає зразка шаблону імпорту, назви будуть точними.

Імпорт з іншої програми

External ID (ID) — це унікальний ідентифікатор елемента рядка. Можна використовувати External ID (ID) з попереднього програмного забезпечення для полегшення переходу на Odoo.

Встановлення ID не є обов’язковим під час імпорту, але воно допомагає в багатьох випадках:

Щоб відтворити зв’язки між різними записами, унікальний ідентифікатор з вихідної програми слід використовувати для зіставлення його зі стовпцем Зовнішній ID (ID) в Odoo.

Коли імпортується інший запис, що посилається на перший, використовуйте XXX/ID (XXX/Зовнішній ID) для вихідного унікального ідентифікатора. Цей запис також можна знайти за його назвою.

Попередження

Слід зазначити, що конфлікти виникають, якщо два (або більше) записи мають однаковий Зовнішній ID.

Відсутнє поле для зіставлення стовпця

Odoo евристично намагається визначити тип поля для кожного стовпця у імпортованому файлі на основі перших десяти рядків файлів.

Наприклад, якщо стовпець містить лише числа, як варіанти пропонуються лише поля типу integer.

Хоча така поведінка може бути корисною в більшості випадків, вона також може зазнати невдачі, або стовпець може бути зіставлено з полем, яке за замовчуванням не пропонується.

Якщо це станеться, увімкніть опцію Показати поля полів зв’язків (розширене), і тоді стане доступним повний список полів для кожного стовпця.

Пошук поля для зіставлення зі стовпцем податку.

Зміна формату імпорту даних

Примітка

Odoo може автоматично визначити, чи є стовпець датою, і намагається вгадати формат дати з набору найпоширеніших форматів дат. Хоча цей процес може працювати для багатьох форматів дат, деякі формати дат не розпізнаються. Це може спричинити плутанину через інверсію дня та місяця; важко вгадати, яка частина формату дати є днем, а яка — місяцем у даті, наприклад 01-03-2016.

При імпорті файлу CSV Odoo надає опції Форматування.

Щоб переглянути, який формат дати Odoo визначив з файлу, перевірте Формат дати, який відображається при натисканні на опції під селектором файлів. Якщо цей формат неправильний, змініть його на бажаний формат, використовуючи ISO 8601 для визначення формату.

Важливо

ISO 8601 — це міжнародний стандарт, що охоплює глобальний обмін і передачу даних, пов’язаних із датою та часом. Наприклад, формат дати має бути YYYY-MM-DD. У випадку 24 липня 1981 року його слід записати як 1981-07-24.

Порада

При імпорті файлів Excel (.xls, .xlsx) розгляньте можливість використання комірок дат для зберігання дат. Це зберігає локальні формати дат для відображення, незалежно від того, як дата відформатована в Odoo. При імпорті файлу CSV використовуйте розділ Форматування в Odoo для вибору формату дати стовпців для імпорту.

Імпорт чисел зі знаками валют

Odoo повністю підтримує числа з дужками для представлення від’ємних значень, а також числа зі знаками валют. Odoo також автоматично визначає, який роздільник тисяч/десяткових знаків використовується. Якщо використовується символ валюти, невідомий Odoo, він може не розпізнатися як число, і імпорт завершиться невдачею.

Примітка

При імпорті файлу CSV з’являється меню Форматування у лівому стовпці. У цих опціях можна змінити Роздільник тисяч.

Приклади підтримуваних чисел (використовуючи «тридцять дві тисячі» як цифру):

  • 32.000,00

  • 32000,00

  • 32,000.00

  • -32000.00

  • (32000.00)

  • $ 32.000,00

  • (32000.00 €)

Приклад, який не буде працювати:

  • ABC 32.000,00

  • $ (32.000,00)

Важливо

() (дужки) навколо числа вказують, що число є від’ємним значенням. Символ валюти повинен бути розміщений всередині дужок, щоб Odoo розпізнав його як від’ємне значення валюти.

Таблиця попереднього перегляду імпорту відображається неправильно

За замовчуванням попередній перегляд імпорту налаштовано на коми як роздільники полів і лапки як обмежувачі тексту. Якщо файл CSV не має цих налаштувань, змініть параметри Форматування (відображаються під панеллю Імпорт файлу CSV після вибору файлу CSV).

Важливо

Якщо файл CSV має табуляцію як роздільник, Odoo не виявляє розділення. Параметри формату файлу потрібно змінити у програмі для роботи з електронними таблицями. Дивіться розділ Зміна формату файлу CSV.

Зміна формату файлу CSV у програмі для роботи з електронними таблицями

Під час редагування та збереження файлів CSV у програмах для роботи з електронними таблицями застосовуються регіональні налаштування комп’ютера для роздільника та обмежувача. Odoo рекомендує використовувати OpenOffice або LibreOffice, оскільки обидві програми дозволяють змінювати всі три параметри (у програмі LibreOffice перейдіть до Діалогове вікно «Зберегти як» ‣ Позначте поле «Редагувати параметри фільтра» ‣ Зберегти).

Microsoft Excel може змінювати кодування під час збереження (Діалогове вікно «Зберегти як» ‣ Спадне меню «Інструменти» ‣ Вкладка «Кодування»).

Різниця між ідентифікатором бази даних та зовнішнім ідентифікатором

Деякі поля визначають зв’язок з іншим об’єктом. Наприклад, країна контакту є посиланням на запис об’єкта «Країна». Під час імпорту таких полів Odoo має відтворити зв’язки між різними записами. Щоб допомогти імпортувати такі поля, Odoo надає три механізми.

Важливо

Лише один механізм має використовуватися для кожного поля, що імпортується.

Наприклад, щоб посилатися на країну контакту, Odoo пропонує три різні поля для імпорту:

  • Країна: назва або код країни

  • Країна/Ідентифікатор бази даних: унікальний ідентифікатор Odoo для запису, визначений стовпцем ID PostgreSQL

  • Країна/Зовнішній ідентифікатор: ідентифікатор цього запису, на який посилаються в іншій програмі (або файлі .XML, який його імпортував)

Наприклад, для країни Бельгія використовуйте один із цих трьох способів імпорту:

  • Країна: Belgium

  • Країна/Ідентифікатор бази даних: 21

  • Країна/Зовнішній ідентифікатор: base.be

Залежно від потреб компанії використовуйте один із цих трьох способів для посилання на записи у зв’язках. Ось приклад, коли той чи інший має використовуватися залежно від потреби:

  • Використовуйте Країна: це найпростіший спосіб, коли дані надходять із файлів CSV, які були створені вручну.

  • Використовуйте Країна/Ідентифікатор бази даних: це рідко має використовуватися. Здебільшого це використовується розробниками, оскільки основною перевагою є відсутність конфліктів (може бути кілька записів з однаковою назвою, але вони завжди мають унікальний ідентифікатор бази даних)

  • Використовуйте Країна/Зовнішній ідентифікатор: використовуйте зовнішній ідентифікатор під час імпорту даних із сторонньої програми.

Коли використовуються зовнішні ідентифікатори, імпортуйте CSV файли зі стовпцем External ID (ID), що визначає зовнішній ідентифікатор кожного запису, який імпортується. Потім на цей запис можна посилатися за допомогою стовпців, таких як Field/External ID. Наступні два CSV файли надають приклад для продуктів та їх категорій.

Імпорт полів зв’язків

Об’єкт Odoo завжди пов’язаний з багатьма іншими об’єктами (наприклад, продукт пов’язаний з категоріями продуктів, атрибутами, постачальниками тощо). Щоб імпортувати ці зв’язки, записи пов’язаного об’єкта потрібно спершу імпортувати з їх власного меню списку.

Це можна зробити, використовуючи або назву пов’язаного запису, або його ідентифікатор, залежно від обставин. Ідентифікатор очікується, коли два записи мають однакову назву. У такому випадку додайте / ID в кінці заголовка стовпця (наприклад, для атрибутів продукту: Product Attributes / Attribute / ID).

Параметри для декількох збігів у полях

Якщо, наприклад, є дві категорії продуктів з дочірньою назвою Sellable (наприклад, Misc. Products/Sellable і Other Products/Sellable), перевірка зупиняється, але дані все одно можуть бути імпортовані. Однак Odoo рекомендує не імпортувати дані, оскільки всі вони будуть пов’язані з першою категорією Sellable, знайденою в списку Категорія продукту (Misc. Products/Sellable). Натомість Odoo рекомендує змінити значення одного з дублікатів або ієрархію категорій продуктів.

Однак якщо компанія не бажає змінювати конфігурацію категорій продуктів, Odoo рекомендує використовувати зовнішній ідентифікатор для цього поля „Категорія“.

Імпорт полів зв’язку many2many

Теги слід розділяти комою без пробілів. Наприклад, якщо клієнта потрібно пов’язати з обома тегами: Manufacturer і Retailer, тоді в одному стовпці CSV файлу потрібно вказати „Manufacturer,Retailer“.

Імпорт зв’язків one2many

Якщо компанія хоче імпортувати замовлення на продаж з кількома рядками замовлення, у CSV файлі має бути зарезервовано окремий рядок для кожного рядка замовлення. Перший рядок замовлення імпортується в тому ж рядку, що й інформація щодо замовлення. Будь-які додаткові рядки потребують додаткового рядка, який не містить жодної інформації в полях, що стосуються замовлення.

Example

Компанія імпортує комерційні пропозиції за допомогою файлу CSV, що базується на демонстраційних даних:

Компанія імпортує замовлення на закупівлю з відповідними рядками замовлень на закупівлю за допомогою файлу CSV:

Компанія імпортує клієнтів та їхні відповідні контакти за допомогою файлу CSV:

Імпорт файлів зображень

Щоб імпортувати файли зображень разом із завантаженим CSV або Excel файлом, виконайте наступні кроки:

  1. Додайте назви файлів зображень до відповідного стовпця Image у файлі даних.

  2. Завантажте файл даних або перезавантажте його, натиснувши Load Data File.

  3. Натисніть Upload your files у розділі Files to import.

  4. Виберіть відповідні файли зображень. Кількість вибраних файлів з’явиться поруч з кнопкою.

  5. Натисніть Test, щоб перевірити, чи всі дані є дійсними.

  6. Натисніть Import. Під час процесу імпорту Odoo виконує перевірку файлу, щоб автоматично зв’язати завантажені зображення з імпортованим файлом даних. Якщо збігів немає, файл даних імпортується без зображень.

Примітка

  • Розділ Файли для імпорту увімкнено, якщо шаблон продукту має стовпець Зображення з усіма заповненими полями.

  • Назви файлів зображень у файлі даних повинні відповідати завантаженим файлам зображень.

  • При імпорті великої кількості зображень вкажіть максимальний розмір пакета в мегабайтах і встановіть затримку, щоб запобігти перевантаженню системи. Для цього увімкніть режим розробника та заповніть поля Макс. розмір на пакет і Затримка після кожного пакета у розділі Файли для імпорту. За замовчуванням затримка відповідає ліміту викликів RPC/API, визначеному в Odoo Cloud - Політика прийнятного використання.

Імпорт записів кілька разів

Якщо імпортований файл містить один зі стовпців: 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 буде чотири контакти та три компанії (перші два контакти пов’язані з першою компанією). Пам’ятайте, що спочатку потрібно імпортувати компанії, а потім людей.

Оновлення даних в Odoo

Наявні дані можна масово оновити за допомогою імпорту даних, якщо External ID залишається незмінним.

Підготувати експорт даних

Щоб оновити дані через імпорт, спочатку перейдіть до даних, які потрібно оновити, і виберіть значок (Список), щоб активувати вигляд списку. У крайній лівій частині списку позначте прапорець для будь-якого запису, який потрібно оновити. Потім натисніть кнопку Дії і виберіть Експорт зі спадного меню.

У спливаючому вікні Export Data встановіть прапорець I want to update data (import-compatible export). Це автоматично включає External ID в експорт. Крім того, це обмежує список Fields to export лише полями, які можна імпортувати.

Примітка

Поле External ID не з’являється у списку Fields to export, якщо його не додати вручну, але воно все одно включається в експорт. Однак якщо встановлено прапорець I want to update data (import-compatible export), воно включається в експорт.

Виберіть необхідні поля для включення в експорт за допомогою параметрів у спливаючому вікні, потім натисніть Export.

Імпортувати оновлені дані

Після експорту внесіть необхідні зміни до файлу даних. Коли файл буде готовий, його можна імпортувати, виконавши той самий процес, що й для звичайного імпорту даних.

Небезпека

Під час оновлення даних надзвичайно важливо, щоб External ID залишався незмінним, оскільки саме так система ідентифікує запис. Якщо ID змінено або видалено, система може додати дублікат запису замість оновлення наявного.