Як завантажити свій файл у каталог: універсальний імпорт з ручною розміткою колонок

34 хв

Elbuz завантажує в базовий каталог файл будь-якої структури — XML, YML, CSV, XLS чи XLSX. Ви один раз показуєте, яка колонка чи тег відповідає якому полю товару, і далі файли того самого вигляду вантажаться за цією розміткою.

Коли це знадобиться:

  • Прайс постачальника у власному форматі — наступний файл вантажиться за збереженою розміткою.
  • Каталог з іншої системи пласкою таблицею — дерево розділів будується з колонки зі шляхом категорії.
  • Назви колонок незнайомі — «Аналізувати файл» показує, що у файлі є, а AI пропонує розмітку.
  • Постачальник переписує назви товарів — власний ключ упізнає товар за кодом, і дублів не з'являється.

З чого почати: відкрийте шаблон «Универсальный импорт» і розмітьте колонки свого файлу.

Що вміє універсальний імпорт

  • Розмітка колонок — ви вказуєте, з якої колонки чи тегу брати кожне поле товару, і вона зберігається в шаблоні.
  • Підказки — «Аналізувати файл» показує колонки й теги файлу, AI пропонує готову розмітку.
  • Категорії — за ID з блоку категорій або за текстовим шляхом «Розділ / Підрозділ».
  • Власний ключ — товар упізнається за кодом постачальника, хоч би як змінилася назва.
  • Журнал прогону — видно, скільки рядків прочитано й де зупинилося завантаження.
  • Одиниці виміру — «шт.» і «штук» з різних файлів зводяться в одну одиницю довідника.

Де це і хто має доступ

Меню
Довідники → Операції → Завантаження даних
Інші входи
рядок «Универсальный импорт» у списку шаблонів — вікно розмітки
Право доступу
вікно «Завантаження» у «Правах груп»
Підготувати
файл XML, YML, CSV, XLS чи XLSX або посилання на нього

Коли брати універсальний імпорт, а не готовий шаблон

Універсальний імпорт беруть, коли готового шаблону під ваш файл немає. Готові шаблони — XML/YML, CommerceML (1С), XLSX (Prom/EVO) — розраховані на стандартну структуру: назви колонок і вузлів у них наперед відомі. Якщо файл стандартний, простіше взяти готовий шаблон: там колонки вже розмічені.

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

Формати: XML та YML, CSV, XLS і XLSX. Файл можна завантажити з комп'ютера або дати посилання, за яким Elbuz забиратиме його сам. Формат ви обираєте в шаблоні: у таблиці (CSV/XLSX) дані лежать по колонках, у XML — по вузлах.

Вікно «Завантаження» зі списком шаблонів імпорту
1Рядок універсального шаблону імпорту
  1. Рядок «Универсальный импорт» — шаблон типу «Універсальний» для файлів XML, CSV, XLS.

Як розмітити колонки файлу

Розмітка — це таблиця відповідностей: ліворуч поле картки Elbuz, праворуч — джерело у файлі. Для кожного потрібного поля вкажіть, звідки брати значення:

  • для таблиці (CSV, XLS, XLSX) — колонку файлу (за назвою заголовка чи номером);
  • для XML — вузол або атрибут (наприклад, price, vendor, @id), а також вузол товару — повторюваний елемент, що відповідає одному товару (наприклад, //offer).

Незіставлені поля програма не заповнює й не чіпає — розмічайте лише те, що є у файлі. Розмітка зберігається в шаблоні кнопкою «Зберегти налаштування»; змінити відповідність можна будь-коли, поправивши потрібний рядок.

Форма універсального шаблону імпорту з таблицею відповідності полів
1Рядок розмітки: поле каталогу ↔ джерело
2Вибір формату файлу
  1. Рядок розмітки зіставляє поле каталогу Elbuz (ліворуч) з тегом або колонкою джерела (праворуч).
  2. Формат файлу визначає, як система читає джерело — XML, CSV, XLS чи XLSX.

Що можна зіставити

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

  • Категорію — за ідентифікатором з файлу або за повним шляхом (категорії).
  • Характеристики — окрема секція для атрибутів товару; її поле «Одиниця» шукається в довіднику одиниць виміру (одиниці виміру).
  • Фото — окреме поле для посилань на зображення.

Що буде з порожніми значеннями

  • Порожнє значення заповненого не затирає. Якщо поле зіставлено, а в рядку файлу воно порожнє, у картці лишається попереднє значення.
  • Кількість — виняток. Зіставлена порожня або нульова кількість робить товар «Немає на складі». Якщо кількість не зіставлено взагалі, товар дістає статус «В наявності».
  • Рядок без назви відкидається цілком. Без «Найменування» з рядка в каталог не потрапляє нічого.

Як не вгадувати назви колонок: аналіз файлу, AI і пресети

«Аналізувати файл» читає ваш файл і показує знайдені теги та колонки підказками в полях розмітки — залишається обрати потрібні зі списку. З XML і CSV він бере перші 512 КБ (XLS і XLSX читаються цілком), проходить не більше 50 вузлів товару в XML, а в таблиці читає рядок заголовків. У каталозі після цього не змінюється нічого.

«Заповнити за допомогою AI» пропонує готову відповідність: програма сама здогадується, де назва, де ціна, де артикул, а ви перевіряєте й правите. У запит іде зразок файлу: для XML — перший вузол товару, обрізаний до 8000 символів; для CSV та XLS — перші шість рядків, кожне значення вкорочене до 120 символів.

Після «Заповнити за допомогою AI» кожне поле картки отримує свою колонку файлу — залишається перевірити
Дві верхні відмови спрацьовують ще до запиту до AI. Усі відмови нижче лишають форму як була, а успіх замінює рядки полів товару — у шаблоні вони опиняться після «Зберегти налаштування»
НіТак, XMLНіТак, CSV або XLSТакНіТакНіТак«Заповнити за допомогою AI»Файл обрано на вкладці«Локальний файл»?«Спочатку оберіть файл» —запиту немаєВузол товарузнайдено у файлі?«У файлі не знайдено вузолтовару…» —запит до AI не відправленоЗразок файлу й перелік полів —один запит до мовної моделіAI відповіві відповідь розібрано?«AI не повернув відповідь» або«Не вдалося розібрати відповідьAI» —форма без змінУпізнано хоча бодне поле?«AI не зміг зіставити жодногополя» —форма без змінРядки полів товару заміненопропозицією AI —далі «Зберегти налаштування»
  • Початок або кінець
  • Дія або результат
  • Розвилка: далі шлях залежить від відповіді

Для типових джерел є пресети — збережені набори відповідностей, які підставляють розмітку одним кліком.

Пресет, AI і JSON замінюють розмітку, а не доповнюють:

  • вибір пресета замінює розмітку цілком, разом із форматом файлу й налаштуваннями джерела;
  • «Заповнити за допомогою AI» замінює цілком блок полів товару, а також блоки фото, характеристик, категорій і тегів — ті, на які AI дав відповідь. Поля, які ви зіставили руками, а AI не знайшов, зникнуть. Формат файлу й налаштування джерела беруться з форми;
  • кнопка «Застосувати до форми» на вкладці «JSON (розширено)» замінює розмітку тим, що написано в редакторі.

Порядок, який зберігає роботу: спершу пресет або AI, потім ручні правки, і тільки потім «Зберегти налаштування».

Як завантажити категорії: за ID або за шляхом

Категорії у файлі бувають двох видів:

  • Блок категорій з ідентифікаторами (як у YML) — Elbuz будує дерево за ним, а товар прив'язує за його categoryId. Такий блок є лише для XML.
  • Текстовий шлях у рядку товару («Побутова техніка / Кухня / Чайники») — Elbuz розбирає шлях і створює вкладеність розділів сам. Це спосіб для пласких таблиць без окремого класифікатора.

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

  • розділ, створений за текстовим шляхом, шукається за парою «батьківський розділ + назва». Перейменували його у себе — наступний прогін створить поруч новий розділ зі старою назвою;
  • розділ, створений за ID з блоку категорій, шукається за ID і перейменування переживе. Але назву з файлу прогін щоразу записує назад.

Товари, у яких категорію не вказано або не розпізнано, лягають у службовий розділ «Товари - universal» — вимкнений і без вивантаження. Не порожній після прогону — сигнал поправити розмітку категорій. Як перенести звідти товари й чому не можна видаляти розділ разом із ними: службові категорії.

Три гілки — три способи, якими категорія потрапляє в розмітку. Права гілка — товари, яким розділ не дістався: вони чекають у вимкненому службовому розділі
Блок категорій з ID(лише XML)ТакНі«Шлях категорій у товарі»(перший шлях —головний)ТакНіНе вказаноабо не розпізнаноТовар із файлуЯк у розмітцізадано категорію?Розділ із цим IDуже є в каталозі?Товар у цьому розділі —назву розділу переписано з файлуСтворено увімкнений розділ,товар у ньомуПід тим самим батьком єрозділ із такою назвою?Товар привʼязанодо наявного розділуСтворено розділи за шляхом,товар привʼязано до них«Товари - universal» —вимкнений, без вивантаження
  • Початок або кінець
  • Розвилка: далі шлях залежить від відповіді

Як Elbuz упізнає товар і як задати власний ключ

Окремого поля «ключ» у переліку полів немає: упізнавання вбудоване й працює у два кроки. Спершу Elbuz шукає картку з таким самим ID товару (рядок UUID) — якщо ви передаєте його з файлу. Якщо такого поля в розмітці немає, він шукає за зв'язкою трьох полів: «Артикул виробника» + «Найменування» + «Зовнішнє посилання». Регістр і зайві пробіли не враховуються.

Ліва гілка працює, коли в рядку є власний ключ: тоді звʼязка трьох полів уже не перевіряється. Обидві гілки сходяться на «Не оновлювати» — ця ознака вирішує, чи зміниться знайдена картка
НіТакТакНіНіНіТакТакТакНіРядок файлуЗаповнено«Найменування»?Рядок відкинуто —у каталог нічого не потрапляєУ рядку заповненовласний ключ uuid?Є картказ таким ключем?Є картка з тією ж звʼязкою«Артикул виробника» +«Найменування»+ «Зовнішнє посилання»?Створено нову карткуКартка позначена«Не оновлювати»?Поля картки не зміненоКартку оновленозіставленими полями
  • Початок або кінець
  • Розвилка: далі шлях залежить від відповіді

Звідси два наслідки, через які найчастіше й зʼявляються дублі:

  • якщо в наступному файлі змінилася назва того самого товару («Чайник біл.» → «Чайник білий») — зв'язка вже не збігається, і замість оновлення зʼявиться друга картка;
  • якщо у файлі два різні товари з однаковою назвою й однаковим (або порожнім) артикулом — перше завантаження заведе дві картки, а далі оновлюватиметься лише одна з них.

Надійніше задати власний ключ. На вкладці «JSON (розширено)» допишіть у розділ product рядок "uuid": {"from": "Код"}, де «Код» — колонка або тег зі стабільним ідентифікатором товару в джерелі (до 80 символів), і натисніть «Застосувати до форми». Тоді товар упізнається за цим значенням, а саме значення наступні прогони не перезаписують.

Вкладка «JSON (розширено)» універсального шаблону: редактор JSON і кнопка «Застосувати до форми»
1Розділ product
2Застосувати до форми
  1. Розділ product — сюди дописують новий ключ з ідентифікатором.
  2. Кнопка «Застосувати до форми» переносить зміни з JSON у таблицю відповідності.

Як запустити завантаження й перевірити результат

Запускайте кнопкою «Завантажити» у шапці вікна шаблону. Джерело файлу визначає відкрита вкладка над розміткою: «Локальний файл» — піде файл, який ви щойно обрали; «Зовнішнє посилання» — Elbuz забере файл за адресою з поля посилання. Прогін бере розмітку з екрана, навіть незбережену.

Кнопка «Завантажити» в переліку шаблонів і значок ▶ у його рядку нічого не завантажують: журнал напише «Завантаження даних завершено!», але жодного товару не з'явиться. Розкладу в цього шаблону немає. Запускайте завантаження з вікна самого шаблону.

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

Перемикач «Активний / Вимкнений» у шапці вікна впливає лише на груповий запуск «Завантажити всі шаблони» (вимкнути чи видалити). Видалити універсальний шаблон не можна — це системний рядок.

Верхні відмови трапляються до читання файлу, і каталог лишається як був. Після «Стоп» збережене нікуди не дівається — прогін закінчується фінальною обробкою, як і звичайний
«Локальний файл»Ні«Зовнішнє посилання»НіТакТак — Elbuz забираєфайл за посиланнямНіТакТакНі, файл дочитано«Завантажити» у вікні шаблонуЯка вкладкавідкрита?Файл доїхавна сервер?«Файл не вдалося передати насервер…» —каталог без змінПосиланнязаповнене?Завантаження не починається —каталог без змінРозміткузадано?«Не задано відповідність полів» —каталог без змінЧитання файлу пачками по 2000рядків —після кожної «Збережено товарів:N»Натиснули «Стоп»?перевірка раз на 200 рядківЗбережено накопичене, фінальнаобробка —«Операція перерванакористувачем!»Фінальна обробка каталогу —«Завантаження данихзавершено!»
  • Початок або кінець
  • Дія або результат
  • Розвилка: далі шлях залежить від відповіді

Що показує журнал прогону

Журнал відкривається в бічній панелі «Сповіщення та операції», вкладка «Активні», і не зникає, якщо закрити вікно шаблону:

  • «Читання файлу (XML)» — у дужках формат із розмітки. Не той формат — зупиняйтеся одразу;
  • «Збережено товарів: N» — після кожної пачки у 2000 рядків;
  • «Фінальна обробка каталогу (націнки, сортування, індексація)…» — файл дочитано;
  • «Усього оброблено товарів: N», далі «Завантаження даних завершено!» і «Витрачено часу».

Обидва числа в журналі — це рядки, прочитані з файлу, а не картки в каталозі. Рядок без назви відкидається вже після підрахунку. «Усього оброблено товарів: 4000» при порожньому каталозі означає, що поле «Найменування» не зіставлене.

Кожен прогін окремим рядком видно в «Історії запусків» (значок у шапці вікна шаблону), а картки цього шаблону — у базовому каталозі за колонками «Джерело: назва», «Джерело: код» і «Джерело: ID». Детальніше: як перевірити, що завантаження пройшло. Рядки журналу зберігаються 14 днів, картки операцій — 90.

Вікно «Історія запусків» шаблону «Универсальный импорт»: підсумки за період і список запусків
1Підсумки за період
2Рядок запуску
  1. Підсумки за період — кількість запусків, середня та найдовша тривалість, запуски з помилками.
  2. Рядок запуску — початок, стан, джерело, час виконання, користувач і підсумок одного завантаження.

Що буде з каталогом при наступних прогонах

Загальна механіка повторного завантаження однакова для всіх шаблонів і описана в огляді: що перезапише повторний прогін. Нижче — що особливого в універсального.

Товар зник із файлу

Універсальне завантаження не вимикає, не обнуляє й не видаляє картки, яких у новому файлі не стало: галочки «Видаляти записи…» в цього шаблону немає. Детальніше: товар зник із джерела.

Галочка «Категорії з файлу — єдина правда» в секції «Категорії» прибирає у товарів із файлу лише ті розділи, яких у файлі немає. Товари, яких у файлі немає, вона не чіпає. Застарілі позиції знайдіть у базовому каталозі: відбір за «Джерело: назва», сортування за «Дата оновлення» — давня дата означає, що товар у файлах більше не приходить.

Чому товар не оновився

Картку з ознакою «Не оновлювати» універсальне завантаження не чіпає, а з «Фіксована ціна» — не змінює її ціну. Фото імпорт додає лише новим товарам. Детальніше: як закріпити своє значення.

Якщо той самий товар приносять два шаблони, лишається значення останнього прогону; колонки «Джерело» показують того, хто картку створив (два шаблони на той самий товар).

Якщо прогін наплодив зайвих карток

Картки цього шаблону відбирають у базовому каталозі за «Джерело: назва», «Джерело: код» (тут universal) і «Дата додавання». Зайві видаляють — остаточно (якщо завантажили не те). Пари однакових карток зливає вікно «Дублікати каталогу» (пошук і злиття дублікатів). Щоб дублі не поверталися, задайте власний ключ.

Якщо завантаження обірвалося

Дані лягають у каталог пачками по 2000 рядків, тож після обриву в каталозі лишається те, що встигло зберегтися; межу показує останнє «Збережено товарів: N». «Стоп» прогін перевіряє раз на 200 рядків. Повторний запуск безпечний, якщо товар упізнається стабільно (власний ключ). Детальніше: якщо прогін обірвався.

Межі одного прогону

Стелі на кількість рядків немає: файл читається потоково, а на прогін відведено 2 години. Файл, який не доходить на сервер через браузер, вантажте посиланням. Детальніше: межі одного прогону.

Сценарії

Прайс постачальника у своєму форматі

Що увімкнути: таблиця Excel зі стовпцями «Код», «Найменування», «Ціна опт», «Залишок», «Бренд», «Розділ». Розмітка: «Код» → «Артикул виробника», «Найменування» → назва, «Ціна опт» → ціна, «Залишок» → кількість, «Бренд» → виробник, «Розділ» → категорія за шляхом. Той самий «Код» задайте власним ключем: "uuid": {"from": "Код"}.

Що вийде: наступний прайс того самого вигляду вантажиться цією ж розміткою, а позиції впізнаються навіть після того, як постачальник перепише назви.

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

Що увімкнути: у розмітці — «Найменування» й інші потрібні поля; на вкладці «JSON (розширено)» у розділі product рядок "uuid": {"from": "Код"} з колонкою стабільного коду постачальника, далі «Застосувати до форми» і «Зберегти налаштування». Ключ задавайте до першого завантаження цього прайсу.

Що вийде: товар упізнається за кодом, хоч би як змінилася назва. Чого не станеться: картки, які цей прайс завів раніше без ключа, за кодом не впізнаються — прогін заведе поруч другі картки.

Перенести каталог із пласкої таблиці іншої системи разом із деревом розділів

Що увімкнути: формат CSV, XLS чи XLSX; у секції «Категорії» — «Шлях категорій у товарі» (колонка з рядком на кшталт Техніка>Кухня>Чайники), «Роздільник рівнів» (типово >) і «Роздільник категорій» (типово |) — якщо товар лежить у кількох розділах.

Що вийде: розділи створюються за шляхом, товар привʼязується до всіх перелічених, а перший шлях стає головним. Повторний прогін бере наявний розділ із тією ж назвою під тим самим батьком. Товари з порожньою колонкою шляху ляжуть у вимкнений «Товари - universal».

Постачальник перекладає товари між розділами, а в каталозі вони лишаються і в старих

Що увімкнути: у секції «Категорії», блок «Заміщення звʼязків», галочку «Категорії з файлу — єдина правда» — і тільки для повного файлу.

Що вийде: у товарів із файлу лишаються рівно ті розділи, які вказані у файлі; інші звʼязки прибираються, зокрема проставлені вручну. Без галочки нові розділи лише додаються. Самі розділи не видаляються — зникають лише звʼязки товарів із ними.

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

Що увімкнути: оберіть файл на вкладці «Локальний файл», натисніть «Аналізувати файл», за потреби — «Заповнити за допомогою AI»; для XML спершу перевірте поле «Вузол товару».

Що вийде: знайдені колонки чи теги стають підказками в полях розмітки, AI заповнює рядки полів товару. Чого не станеться: AI не доповнює вашу розмітку, а замінює рядки полів товару — дописаний власний ключ uuid зникне, тож ключ дописуйте після AI.

Що робити, коли завантаження не вдалося

Розбір частих проблем
Що ви бачитеЧому такЩо зробити
«Не задано відповідність полів (mapping_config)» Розмітка порожня або JSON зіпсовано правкою Відкрийте вкладку «Відповідність полів» і зіставте хоча б назву та ціну (як розмітити)
«Не той формат файлу. Для цього шаблону потрібен: .xml, .yml, .csv, .xls, .xlsx» Розширення обраного файлу не з цього переліку Перезбережіть файл у потрібному форматі; перейменувати розширення недостатньо
«Файл не вдалося передати на сервер. Можливо, він завеликий або звʼязок обірвався. Код помилки» Файл не доїхав на сервер, розбір навіть не починався Покладіть файл за посиланням і вантажте з вкладки «Зовнішнє посилання» (межі прогону)
«Читання XLS/XLSX недоступне: не підключено бібліотеку OpenSpout» На цій установці немає читалки таблиць Excel Збережіть файл як CSV і зіставте розділювач, або зверніться в підтримку
«У файлі не знайдено вузол товару. Перевірте поле "Вузол товару"» У полі «Вузол товару» стоїть тег, якого у файлі немає Натисніть «Аналізувати файл» і подивіться, які теги в ньому є насправді
З XML завантажилися не ті дані Вузлом товару вказано не той повторюваний елемент Вкажіть вузол, який у файлі йде по одному на товар (як розмітити)
Кирилиця в назвах «поламалася» Файл не в тому кодуванні Перезбережіть файл у UTF-8
Колонки CSV прочиталися неправильно Роздільник у шаблоні не такий, як у файлі Вкажіть кому, крапку з комою чи табуляцію — як у файлі
«AI не повернув відповідь. Перевірте, що AI-помічник підключений» AI не підключено або це демо-тариф, де він вимкнений Зіставте поля вручну — розмітка від цього нічого не втрачає (підказки)
«AI не зміг зіставити жодного поля» Модель відповіла, але жодного поля не впізнала; форма не змінилася Натисніть «Аналізувати файл» і зіставте поля вручну
У журналі «Усього оброблено товарів» — тисячі, а в каталозі порожньо Не зіставлено «Найменування»: рядки без назви відкидаються після підрахунку Додайте поле «Назва» в розмітку й повторіть прогін (журнал прогону)
Запустили з переліку шаблонів — «Завантаження даних завершено!», а товарів немає Універсальний шаблон із переліку не запускається Відкрийте шаблон і натисніть «Завантажити» в його вікні (запуск)
Після повторного завантаження з'явилися дублі Змінилася назва, артикул або посилання товару у файлі, а власного ключа немає Задайте власний ключ (упізнавання товару), зайві картки приберіть (зайві картки)
Після завантаження товари опинилися в розділі «Товари - universal» Для цих рядків категорію не вказано або не розпізнано Перевірте розмітку категорій і перенесіть товари (категорії)

Часті запитання

Чи треба розмічати файл щоразу?

Ні. Розмітка зберігається в шаблоні, і наступний файл того самого формату вантажиться за нею — досить один раз налаштувати відповідності.

Які формати підтримуються?

XML, YML, CSV, XLS і XLSX. Файл можна завантажити з комп'ютера або вказати посиланням — тоді Elbuz забере його сам, коли ви натиснете «Завантажити».

Чи можна запускати універсальний імпорт за розкладом?

Ні. Розкладу в цього шаблону немає, запуск лише вручну — кнопкою «Завантажити» у вікні шаблону (запуск).

Чи можна скасувати завантаження одним кліком?

Ні, кнопки «відкотити» немає. Наслідки розбирають відбором у базовому каталозі за джерелом і датою (зайві картки).

Чи збере імпорт варіанти товару в родину за характеристиками?

Ні. Пошук товарів-опцій під час універсального завантаження вимкнено; звʼязки варіантів робляться окремо.

Постачальник пише «шт.», інший — «штук». Можна, щоб це була одна одиниця виміру?

Так: у довіднику «Одиниці виміру» впишіть друге написання в колонку «Назва синонім» (синоніми одиниць).

Суміжні теми

Чи була стаття корисною?