Майданчики родини EVO — Prom.ua, satu.kz, deal.by — дозволяють вивантажити весь каталог у файл Excel (XLS, XLSX або CSV) і так само завантажити його назад. Формат файлу імпорту й експорту в них однаковий, тож той самий файл працює в обидва боки. Elbuz читає цей файл напряму: розбирає його аркуші, розкладає значення по картках товарів і, що важливо, зберігає навіть ті поля Prom, яким у стандартній картці немає прямого місця.
Ця стаття — не «натисніть кнопку й усе з'явиться», а докладний розбір: які колонки файлу в які поля потрапляють, за якою логікою зіставляються товари, які обмеження мають поля і як ті самі дані потім вивантажуються назад. Це один зі способів завантаження з огляду завантаження даних: формат Prom має готовий шаблон, тож колонки розмічати вручну не треба — програма впізнає їх за назвами.
Офіційний опис формату — у довідці Prom: Імпорт через Excel — формат файлів XLS(X) та CSV. Тут же ми пояснюємо, як той самий формат читає й зберігає саме Elbuz.
1
Шаблон «XLSX - prom.ua, satu.kz, deal.by»2
Створити новий шаблон- Рядок шаблону типу «XLSX - prom.ua, satu.kz, deal.by», за яким завантажують каталог із Prom.ua, Satu.kz, Deal.by.
- Кнопка «Додати» відкриває форму створення нового шаблону завантаження.
Структура файлу: два аркуші
Excel-файл Prom (XLS/XLSX) містить два аркуші, і Elbuz читає їх за назвами:
- «Export Products Sheet» — товари. Кожен рядок, крім першого, — це один товар; перший рядок — заголовки колонок.
- «Export Groups Sheet» — групи (категорії): їхні номери, назви, ідентифікатори та зв'язок «батько–дитина».
У форматі CSV аркуш лише один (тільки товари), у кодуванні UTF-8 або UTF-16. Перший рядок кожного аркуша — заголовки: Elbuz зіставляє їх із відомими назвами полів і так визначає, у якій колонці що лежить. Назви розпізнаються і російською, і українською (Код_товара = Код_товару, Название_позиции = Назва_позиції тощо), тож обидві мовні версії файлу читаються однаково. Порядок колонок значення не має — важлива саме назва в заголовку; якщо якоїсь колонки немає, відповідне поле лишиться порожнім.
Із трьох форматів, які вміє віддавати Prom, Elbuz читає лише .xlsx. Поле вибору файлу пропускає тільки таке розширення, а на сервері файл додатково перевіряється на початок книги Open XML — старий .xls і .csv, перейменовані в .xlsx, теж не пройдуть. Не той файл зупиняє прогін ще до розбору повідомленням «Файл не є книгою XLSX. Prom.ua, Satu.kz і Deal.by вивантажують каталог у форматі .xlsx — старий .xls не підтримується. Відкрийте файл в Excel і збережіть як «Книга Excel (.xlsx)».», і каталог при цьому не змінюється взагалі.
Головне: ідентифікатори і логіка зіставлення
Найважливіше для повторних завантажень — як програма впізнає, що товар із файлу вже є в каталозі. Від цього залежить, оновиться наявна картка чи створиться дубль. За це відповідають кілька колонок, і Elbuz використовує їх у такому порядку:
| Колонка файлу | Що це | Роль при зіставленні |
|---|---|---|
| Ідентифікатор_товару | внутрішній ідентифікатор товару в системі Prom (у самому Prom це обов'язкове поле для однозначного зіставлення) | головний ключ: за ним товар упізнається насамперед (зберігається у внутрішнє поле картки) |
| Унікальний_ідентифікатор | числовий службовий номер товару Prom; заповнюється Prom автоматично при експорті, вручну його міняти не можна | запасний ключ: використовується, якщо перший порожній |
| Код_товару | ваш артикул (SKU), до 25 символів | не ключ Prom: записується в картку як артикул і MPN |
Логіка така: спочатку Elbuz шукає товар за Ідентифікатором_товару. Якщо цю колонку не заповнено — шукає за Унікальним_ідентифікатором. А якщо не заповнено жодного ідентифікатора — товар вважається новим, і для нього створюється власний внутрішній ключ. Саме тут криється типова пастка: якщо у файлі немає стабільних ідентифікаторів, кожне повторне завантаження створюватиме дублі замість оновлення. Тому файл, вивантажений із самого Prom (де ідентифікатори вже проставлені), — найнадійніше джерело; саморобний файл без ідентифікаторів варто спершу перевірити на невеликій частині.
Prom розрізняє ваш артикул (Код_товару — його задаєте ви) і свій внутрішній ідентифікатор (Ідентифікатор_товару / Унікальний_ідентифікатор — його присвоює сам Prom). Для повторного оновлення без дублів Elbuz спирається саме на внутрішній ідентифікатор Prom, а не на артикул: артикул продавці іноді змінюють, а внутрішній ID лишається сталим.
Куди саме лягають ці ідентифікатори в нас — це варто знати, бо саме вони тримають синхронізацію з Prom:
- Ідентифікатор_товару зберігається у системне поле товару «UUID» — унікальний ключ товару в Elbuz. Це головний ключ зіставлення: при імпорті в UUID лягає Ідентифікатор_товару з файлу.
- Унікальний_ідентифікатор Prom потрапляє в окреме додаткове поле з такою ж назвою (службовий числовий номер товару на Prom).
Пріоритет заповнення UUID при імпорті такий: спершу — Ідентифікатор_товару; якщо його у файлі немає — Унікальний_ідентифікатор; якщо немає й того — Elbuz генерує власний UUID для нового товару. Далі цей UUID стає постійним ключем цієї позиції у вашому каталозі.
Куди потрапляють основні значення картки
Частина колонок лягає прямо в рідні поля картки товару — ті, що є в кожній картці Elbuz:
| Колонка файлу | Поле картки в Elbuz |
|---|---|
| Назва_позиції / Назва_позиції_укр | назва товару (українська версія — в українську мову картки) |
| Ціна + Валюта | ціна (переводиться у вашу базову валюту за курсом) |
| Кількість | залишок |
| Наявність | статус наявності (див. розділ про символи) |
| Номер_групи / Назва_групи / Ідентифікатор_групи | категорія товару (прив'язка до дерева з аркуша груп) |
| Виробник | виробник (додається у довідник, якщо ввімкнено) |
| Опис / Опис_укр | опис товару (укр. версія — в українську мову) |
| HTML_заголовок / HTML_опис / HTML_ключові_слова (+ _укр) | meta-title, meta-description, meta-keywords картки |
| Вага, Ширина, Висота, Глибина, Довжина | вагогабаритні поля картки |
| Код_маркування_(GTIN) | GTIN (штрихкод для Google Merchant) |
| Посилання_зображення | фото товару (кілька URL через кому+пробіл; перше — головне) |
Артикул (Код_товару) записується одразу у два поля картки — артикул і MPN. Ціна перед збереженням приводиться до вашої базової валюти: якщо у файлі ціни в іншій валюті, Elbuz бере курс за кодом валюти й перераховує. Категорія товару зв'язується з деревом груп із аркуша «Export Groups Sheet», а якщо групи товару там немає — вона створюється автоматично з номера й назви, вказаних у самому рядку товару.
У Prom діє окреме правило: щоб оновилась українська версія товару, у файлі мають бути заповнені обидва українські поля — і Назва_позиції_укр, і Опис_укр. Якщо заповнити лише одне з них, переклад на боці Prom не оновиться. Elbuz же приймає українські поля в українську мову картки як є — але тримайте це правило Prom у голові, коли готуєте файл для зворотного вивантаження.
Формати й обмеження значень
У полів Prom є конкретні формати, і файл варто готувати з їх урахуванням — інакше майданчик відхилить рядок або обріже значення:
- Код_товару — до 25 символів (цифри, кирилиця, латиниця, знаки
- _ . /та пробіл). - Назва_позиції — до 110 символів (рос.), Назва_позиції_укр — до 130.
- Опис / Опис_укр — до 12160 символів; HTML_заголовок/опис — до 250 (рос.) / 270 (укр.).
- Ціна — число від 0.01; Валюта — код (UAH, USD, EUR, PLN, KZT…) або скорочення (грн, дол, $).
- Тип_товару — літера:
r— лише роздріб,w— лише опт,u— і опт, і роздріб,s— послуга. - Одиниця_виміру — зі списку Prom (шт., упаковка, комплект, пара, м, кг, л, набір…).
- Оптова_ціна та Мінімальне_замовлення_опт — кілька значень через
;; Подарунки/Супутні — номери рядків або ID через;. - Знижка — число або відсоток (наприклад,
12.5або30%) з датами дії «від/до».
Elbuz зберігає ці значення такими, як вони у файлі (у відповідні поля картки — див. нижче), а перевірку на відповідність вимогам Prom робить уже сам майданчик під час вивантаження. Тому чистий, коректний за форматом файл заощаджує час на обох кінцях.
Наявність: символи Prom і формула зворотного зв'язку
Наявність у файлі Prom кодується символами, і Elbuz переводить їх у свої статуси наявності:
+(або!— «готово до відправки») → у наявності;-→ немає в наявності;&→ очікується;@→ послуга;- цифра (наприклад,
7) → під замовлення (кількість днів на доставку); - порожнє поле → «немає в наявності» (так задумано в Prom).
Найцікавіше — що поле наявності працює у два боки. Разом із додатковим полем «Наявність» Elbuz створює для нього формулу, яка рахує символ Prom не зі старого значення файлу, а з поточного статусу наявності товару у вашому каталозі: «у наявності» перетворюється на +, «немає» — на -, «очікування» — на & і так далі. Тому коли ви вивантажуєте каталог назад на Prom, наявність завжди свіжа — така, яка зараз у вашій системі, а не застигла на моменті імпорту.
Додаткові поля, які створюються автоматично
У Prom значно більше полів, ніж у стандартній картці товару. Щоб нічого з файлу не втратити, Elbuz під час імпорту сам створює в базовому каталозі відповідні додаткові поля й записує туди ці значення. Тобто картка не «обрізає» файл Prom до кількох стандартних полів — вона зберігає його вміст повністю. Ось основні групи таких полів, що з'являються в картці після першого імпорту:
- Ціни й замовлення: Оптова_ціна, Мінімальний_обсяг_замовлення, Мінімальне_замовлення_опт, Ціна_від, Знижка, Термін_дії_знижки_від/до.
- Логістика й пакування: Можливість_постачання, Термін_поставки, Спосіб_пакування (+ укр.), Одиниця_виміру, Де_знаходиться_товар, Країна_виробник, Гарантійний_термін.
- Класифікація Prom: Тип_товару, Ярлик, Номер_групи, Назва_групи, Ідентифікатор_підрозділу, Ідентифікатор_групи, ID_групи_різновидів, Номер_пристрою_(MPN).
- Контент і SEO: Ключові_слова, Пошукові_запити, Особисті_нотатки та українські версії назви, опису й meta-полів.
- Зв'язки й службове: Подарунки, Супутні (та їхні ID), Товар_на_видалення й Причина_видалення, Унікальний_ідентифікатор (окреме індексоване поле під внутрішній номер Prom).
Ці поля видно в картці товару поряд зі стандартними, і з ними можна працювати як зі звичайними: фільтрувати, показувати в сітці, використовувати у формулах і — головне — вивантажувати назад.
1
Уникальный_идентификатор — внутрішній номер товару Prom2
Оптовая_цена — одне з десятків полів фіда Prom- Уникальный_идентификатор — внутрішній номер товару в системі Prom, приходить із фіда без змін.
- Оптовая_цена — одне з десятків користувацьких полів, яке фід Prom.ua додає до картки товару.
Повний цикл: імпорт і експорт — одне ціле
Формат Prom влаштований так, що файл імпорту й файл експорту — однакові. Тому поля, у які імпорт записав дані, — це ті самі поля, з яких дані потім вивантажуються назад на Prom. Зокрема, наш UUID товару на вивантаженні лягає назад у колонку Ідентифікатор_товару, а додаткове поле «Унікальний_ідентифікатор» — у однойменну колонку. Так замикається цикл: завантажили каталог Prom → попрацювали з ним у Elbuz → вивантажили назад, і Prom упізнає свої товари.
Сценарій: ви додали новий товар у Elbuz
Розберемо саме той випадок, що найчастіше бентежить. Ви завантажили каталог із файлу Prom — кожен товар отримав UUID, що дорівнює його Ідентифікатору_товару на Prom. Потім у базовому каталозі Elbuz ви створили новий товар — йому програма присвоїла власний новий UUID, а поля «Унікальний_ідентифікатор» у нього немає (він не приходив з Prom). Що станеться на вивантаженні назад:
- у колонку Ідентифікатор_товару потрапить новий UUID цього товару — значення, якого на Prom ще немає;
- колонка Унікальний_ідентифікатор для нього піде порожня — Elbuz навмисно лишає її порожньою, якщо внутрішнього номера Prom у товару немає.
Коли такий файл завантажується на Prom, майданчик зіставляє товари за Ідентифікатором_товару. Наявні (чий Ідентифікатор_товару Prom знає) — оновлюються. А новий, з невідомим для Prom Ідентифікатором і порожнім Унікальним_ідентифікатором, майданчик сприймає як новий товар і додає його, присвоюючи вже свій внутрішній номер. Тобто нічого не ламається: старі позиції оновлюються, нові — заводяться. Ключова умова — не заповнювати «Унікальний_ідентифікатор» вручну для нових товарів: це службовий номер самого Prom, його не можна вигадувати.
UUID товару (він же Ідентифікатор_товару на Prom) і «Унікальний_ідентифікатор» — це ключі синхронізації. Якщо змінити UUID наявного товару, Prom при наступному вивантаженні визнає його новим і задвоїть позицію. Тому ці поля не редагують вручну — імпорт та експорт керують ними самі.
XML замість XLSX
Prom дозволяє обмінюватися каталогом не лише через Excel, а й через XML — і на вивантаження, і на завантаження. Логіка ідентифікаторів там та сама: у XML теж є ідентифікатор товару, за яким Prom відрізняє новий товар від наявного. Якщо вам зручніше працювати з XML, каталог можна завантажувати імпортом XML / YML; принцип зіставлення за стабільним ідентифікатором лишається незмінним — тільки формат файлу інший.
Де налаштувати вивантаження назад
Зворотне вивантаження на Prom (у той самий формат XLSX) детально описано в парній статті вивантаження на Prom (XLSX) — там і повний порядок обміну з майданчиком, і чому Elbuz не задвоює товари. За замовчуванням серед колонок вивантаження є і Ідентифікатор_товару (= ваш UUID), і Унікальний_ідентифікатор, тож повний двобічний обмін працює «з коробки». Разом імпорт і експорт складають єдиний цикл: те, що ви завантажили, тими самими полями й вивантажується назад.
Не видаляйте автоматично створені поля Prom, навіть якщо якесь із них вам зараз не потрібне. Саме вони забезпечують зворотне вивантаження без втрат: якщо поле прибрати, відповідна колонка на вивантаженні на Prom поїде порожньою.
Характеристики (атрибути)
Характеристики товару Prom тримає в трійках колонок, які завжди йдуть у строгому порядку: Назва_Характеристики, Одиниця_виміру_Характеристики, Значення_Характеристики. Таких трійок у файлі може бути багато — по одній на кожну характеристику, і колонка одиниці виміру має бути присутня, навіть якщо порожня. Множинні значення однієї характеристики розділяють символом | (наприклад, Алюміній | Пластик).
Elbuz розпізнає ці трійки за заголовком і переносить у атрибути товару: назва стає атрибутом, значення — його значенням, а одиниця виміру (см, кг, Вт…) автоматично додається у довідник одиниць, якщо її там ще немає. Характеристики завантажуються разом з рештою даних файлу автоматично — окремо вмикати їх не треба. Якщо ж у товарі атрибутів немає, значить у файлі не було відповідних трійок колонок або їх не вдалося розпізнати за заголовком.
Різновиди (варіанти) товару
Prom позначає варіанти одного товару (кольори, розміри тощо) через поле ID_групи_різновидів: усі рядки з однаковим значенням цього поля й заповненими характеристиками вважаються різновидами одного товару, а перший рядок у групі — основним. Elbuz зберігає це поле, тож зв'язок різновидів не губиться при зворотному вивантаженні. Якщо ви ведете варіанти на Prom, тримайте ID_групи_різновидів у файлі заповненим — саме воно тримає різновиди разом.
Групи (аркуш «Export Groups Sheet»)
Дерево категорій Elbuz будує з аркуша груп. Кожна група має Номер_групи (номер на сайті Prom), Назву (та її укр. версію), Ідентифікатор_групи (зовнішній ID — наприклад, номер групи у вашій CRM), а вкладеність задається полями Номер_батьківської_групи та Ідентифікатор_батьківської_групи (для кореневих груп вони порожні). Є й SEO-поля групи та описи «до» і «після» списку товарів. Групи зіставляються насамперед за ідентифікатором, а якщо його немає — за номером; нові створюються, наявні оновлюються. Якщо товар посилається на групу, якої немає на аркуші груп, Elbuz створить її з даних самого рядка товару, щоб позиція не лишилась «безхатньою».
Режим «видаляти те, чого немає у файлі»
У шаблоні є окремий режим повного дзеркала — прапорець «Видаляти записи в базовому каталозі, яких немає в завантаженому файлі». Увімкнений, він робить каталог точною копією файлу. Усередині порядок такий: спершу програма позначає на видалення весь базовий каталог, потім знімає позначку з тих категорій і товарів, які знайшлися у файлі, решту видаляє — і тільки після цього додає й оновлює те, що у файлі є. Тобто видалення відбувається до завантаження нових даних, а не після звірки результатів.
Чого в цьому шаблоні немає — і про що варто знати до першого вмикання: перемикача «враховувати джерело завантаження» на формі Prom не виведено. Дзеркало не розрізняє, звідки взявся товар: під нього потрапляють і картки, заведені руками, і ті, що прийшли з прайс-листів чи від парсера, якщо їх немає у файлі Prom.
Разом із товаром зникають його опис, прив'язки до категорій і магазинів, характеристики, фото, запитання-відповіді та зв'язки «супутні товари». Разом із категорією — її опис, прив'язки до магазинів, місце в дереві, правила розподілу прайс-листів на цю категорію і її відбір у шаблонах вивантаження. Рядки прайс-листів при цьому не видаляються: у них обнуляється посилання на товар, і рядок лишається висіти без картки.
Одна вбудована страховка все ж є. Якщо у файлі не розпізналося жодного рядка товарів, видалення товарів не запускається взагалі; те саме окремо для категорій. Порожній або неправильно прочитаний файл каталог не витре. А от файл, у якому є хоча б один товар, уже вважається повним — і все інше піде під видалення.
Як повернути видалене дзеркалом
Кнопки «скасувати завантаження» немає, кошика для видалених карток теж: рядки прибираються з бази остаточно. Робочий шлях один — повторно завантажити той самий файл, але повний. Товари повернуться за тим самим Ідентифікатором_товару: він лежить у файлі, тож картки отримають той самий UUID, і зв'язок із Prom не порушиться — зворотне вивантаження далі впізнає свої позиції.
Повторне завантаження повертає не все. Не повернуться:
- запитання-відповіді до картки — цих даних у файлі Prom немає, і взяти їх нізвідки; зв'язки «супутні товари» — колонки Супутні та ID_Супутніх приходять у додаткові поля картки, але самі зв'язки завантаження не відновлює;
- прив'язка рядків прайс-листів до карток — її відновлює повторне завантаження самого прайс-листа;
- правила розподілу прайс-листів, які були прив'язані до видалених категорій, і відбір цих категорій у шаблонах вивантаження;
- фото — тільки якщо у файлі заповнена колонка Посилання_зображення; характеристики — тільки якщо у файлі є трійки колонок характеристик.
І ще одне, чого не видно одразу: внутрішній номер картки буде новий. У рядках уже виписаних документів назва й артикул зберігаються текстом і нікуди не подінуться, а от посилання з документа на картку товару стане недійсним.
Копія бази знімається щоночі, зберігаються сім останніх автоматичних копій (безкоштовні акаунти в нічну архівацію не потрапляють). Але кнопки відновлення з копії в інтерфейсі немає — повернути базу з копії можна лише через підтримку. І це не «дістати звідти кілька товарів»: копія переливається в базу цілком, тож разом із каталогом на добу назад відкотяться всі налаштування, а всі, хто в цей момент працює, будуть розлогінені.
Якщо завантаження обірвалося на середині
Робота йде у два заходи, і це головне, що варто знати про обрив. Спершу Elbuz читає файл цілком у свої проміжні таблиці й базового каталогу не чіпає взагалі. І лише коли файл дочитано до кінця, починається перенесення — у журналі це рядок «Завантажуємо дані до базового каталогу». Тому обрив на читанні (впав зв'язок, файл виявився пошкодженим, ви натиснули «Зупинити») лишає каталог рівно таким, яким він був: нічого не сталося, повторювати можна спокійно.
Кнопка «Зупинити» в «Операціях» спрацьовує не миттєво. Програма звіряється з нею під час читання кожні 500 рядків, а потім ще у двох місцях — перед видаленням зайвого і після оновлення категорій. У панелі операція позначиться як «Зупинено» одразу, а сам прогін дійде до найближчої з цих точок. Далі:
- якщо зупинити під час читання — у журналі стане «Операція перервана користувачем!», а каталог лишиться незмінним;
- якщо зупинити вже після того, як категорії оновилися, — категорії будуть новими, а товари ще старими. Це не поломка: повторний прогін доведе справу до кінця.
Якщо прогін помер сам — уперся в межу часу, обірвався зв'язок із базою, — відкоту немає: усе, що встигло записатися, лишається записаним. Транзакцією обгорнуто одне-єдине місце — заміна фотографій: якщо вона впала посередині, старі фото повертаються, і ситуації «старих фото вже немає, нових ще немає» не буває.
Картка операції після такого обриву не висить «виконується» вічно. Коли ви наступного разу відкриєте «Операції», прогін, у журналі якого 15 хвилин не з'явилося жодного нового рядка, позначиться як «Перервано: процес завершився аварійно або не подав ознак активності». Завдання розкладу теж розклинюється: замок, який не подає ознак життя 15 хвилин, знімається, і наступний запуск за розкладом стартує нормально.
Повторний запуск безпечний. Проміжні таблиці перед кожним прогоном створюються заново, тож залишки від обірваного прогону в новий не потраплять. Товари, які вже встигли створитися, знайдуться за своїм ідентифікатором і оновляться, а не задвояться. Єдиний випадок, коли повтор таки робить дублі, — файл без ідентифікаторів товару: там кожен прогін вигадує нові ключі й заводить нові картки.
Як переконатися, що завантаження відпрацювало
Журнал прогону живе не у вікні шаблону, а в «Операціях» — правій панелі програми; одразу після запуску з'являється підказка «Завантаження запущено — стежте в «Операціях»». Вікно налаштування шаблону тримати відкритим не обов'язково: його закриття завантаження не зупиняє, зупиняє тільки кнопка «Зупинити».
По ходу прогону журнал пише кроки в тому самому порядку, у якому йде робота: «Створення тимчасових таблиць» → «Завантажуємо дані до базового каталогу» → «Визначаємо записи, які є в базі даних» → «Додаємо категорії товарів», «Оновлюємо категорії товарів» і «Оновлюємо ключі для категорій» → «Визначаємо виробників у товарів» → «Визначаємо наявність у товарів» → «Додаємо товари» і «Оновлюємо товари» → «Завантажуємо атрибути товарів» → «Завантажуємо фотографії товарів» → «Оновлення значень на основі формул» → «Перевірка цілісності даних» → «Індексування товарів». Останній рядок — «Завантаження даних завершено!», а під ним «Витрачено часу:» з тривалістю прогону.
Цифр у журналі рівно дві, і читати їх треба буквально:
- «Всього товарів завантажено: N» — поки йде читання, це лічильник прочитаних рядків файлу, він оновлюється кожні 500 рядків. Наприкінці той самий рядок показує підсумок: скільки рядків товарів було у файлі. Це не кількість створених чи оновлених карток — скільки з них виявилися новими, а скільки оновилися, журнал не рахує.
- «Усього категорій завантажено: N» — те саме для аркуша груп.
Ще два рядки з'являються лише за потреби. «Не завантажено фотографій: N» — якщо частина посилань на фото виявилася непридатною. Червоне «Частина даних не збереглася: база відхилила запит.» — якщо хоча б один запит база відхилила; цей рядок означає, що прогін дійшов до кінця, але не всі дані доїхали, і плутати його з підсумковим «Завантаження даних завершено!» не можна.
Тепер куди дивитися в сітках:
- У списку шаблонів колонка «Останнє завантаження» показує, коли шаблон відпрацював востаннє і скільки це зайняло. «ще не завантажувався» означає, що прогонів не було жодного.
- У сітці базового каталогу факт оновлення підтверджує колонка «Дата оновлення»: у всіх оновлених карток вона стане часом прогону. Нові картки видно по колонці «Дата додавання» і по «Джерело: назва» — там буде назва вашого шаблону, а в «Джерело: код» —
prom_xlsx.
Колонку «Джерело: назва» заповнює тільки створення картки, оновлення її не переписує. Тому товар, який колись прийшов із прайс-листа, а тепер оновлюється з файлу Prom, так і лишиться з прайс-листом у джерелі — і це не ознака того, що завантаження його не зачепило. Ознака оновлення — «Дата оновлення», а не «Джерело».
Історію за довший період відкриває кнопка «Історія запусків» — вона є і в шапці форми шаблону, і в тулбарі списку. За останні 30 днів там видно «Запусків за період», «Середня тривалість», «Найдовший» і «З помилками», а нижче — таблицю прогонів із початком і підсумком кожного.
Вимкнути шаблон чи видалити його
Стан шаблону перемикається однією пілюлею — «Активний» / «Вимкнений» у шапці форми або в колонці «Стан» списку шаблонів. Поки цим шаблоном іде завантаження за розкладом, у колонці «Стан» замість цього стоїть «Виконується», і кліком стан тоді не перемикається.
Що дає стан «Вимкнений»: завантаження за розкладом цей шаблон пропускає, і в режимі «завантажити всі активні» його теж не буде. Більше не змінюється нічого — налаштування, посилання на файл, розклад і всі раніше завантажені товари лишаються на місці. Повернули «Активний» — розклад працює далі, відновлювати нічого не треба.
Чого «Вимкнений» не робить: він не блокує ручний запуск. Кнопка «Завантажити цей шаблон» у рядку списку і кнопка «Завантажити» у формі спрацюють і на вимкненому шаблоні. Вимкнення зупиняє розклад, а не людину.
Видалення — інша дія й інші наслідки. Шаблон не стирається з бази: рядок ховається зі списку разом з усіма налаштуваннями, а з розкладу знімаються відмітки про нього, тож за розкладом він більше не запускається. Даних це не торкається: товари, категорії, характеристики й виробники, завантажені цим шаблоном, лишаються в каталозі — видалення шаблону нічого в каталозі не видаляє. Готовий шаблон «XLSX - prom.ua, satu.kz, deal.by» до того ж системний, видалити його не можна взагалі; якщо він більше не потрібен, його саме вимикають.
Скільки це триває і де межі
Стелі на кількість рядків у файлі немає: програма читає файл до кінця, скільки б рядків у ньому не було. Обмежено інше:
- Дві години на прогін — стільки часу відводиться завантаженню файлу з комп'ютера. Якщо за дві години робота не завершилася, прогін обривається там, де був, з наслідками з розділу про обрив.
- Кожні 500 рядків — крок, з яким програма пише в журнал прочитану кількість і перевіряє кнопку «Зупинити». Між цими точками журнал мовчить, і зупинка теж чекає найближчої з них.
- До 20 фотографій на товар — стільки посилань програма розбере з колонки Посилання_зображення; двадцять перше й далі не завантажаться.
- Артикул — 25 символів (стільки ж дозволяє й сам Prom), назва товару, назва групи й meta-поля — 255 символів, GTIN — 14. Довші значення до картки повністю не доїдуть.
- Розмір файлу обмежує сервер, а не програма. Файл, який не доїхав, видно одразу: «Файл не вдалося передати на сервер. Можливо, він завеликий або зв'язок обірвався. Код помилки ...» — каталог при цьому не змінюється.
Два завантаження одночасно за розкладом не стартують. Якщо в цей момент вантажиться інший шаблон, у журналі з'явиться «Скасовано завантаження за розкладом, причина - завантажується інший шаблон (конфлікт обробки даних).», і прогін просто дочекається наступного разу за розкладом.
Скільки триватиме саме ваш файл, ми не вгадаємо: це залежить від кількості рядків, фотографій і завантаженості сервера. Цифра береться з вашої ж історії — у вікні «Історія запусків» є «Середня тривалість» і «Найдовший» за останні 30 днів. Після першого-другого прогону ви знатимете свій час точно.
Чому товар іноді не оновлюється
Якщо після повторного імпорту якийсь товар лишився без змін, причина зазвичай не у файлі, а в ознаках самого товару. Прапорець «Не оновлювати» в картці (у сітці базового каталогу це колонка «Не оновлювати (прапор)») зупиняє перезапис основних полів: ціни, залишку, наявності, категорії, виробника, ваги й габаритів, усіх додаткових полів Prom. Прапорець «Фіксована ціна» вужчий: оновиться все, крім ціни — файл не перезапише те, що ви зафіксували свідомо.
Але межа цього захисту проходить не там, де її зазвичай уявляють, і це важливо знати до того, як на неї покластися:
- Назву, опис і meta-поля завантаження перезаписує навіть у товару з прапорцем «Не оновлювати». Від перезапису текстів картки цей прапорець не рятує.
- Характеристики для товарів, у яких вони є у файлі, спершу видаляються повністю, а потім записуються ті, що прийшли з файлу. Характеристика, додана руками, при наступному прогоні зникне.
Тому вручну вивірену картку надійніше тримати поза межами файлу, ніж покладатися на прапорець: рядка немає у файлі — і перезаписувати нічого. Але це працює лише з вимкненим режимом повного дзеркала: з увімкненим така картка не вціліє, а буде видалена.
Що обрати в шаблоні
Форма шаблона проста: ви вказуєте джерело — файл з комп'ютера або посилання, за яким Elbuz забиратиме файл сам, — і за потреби вмикаєте перемикач. Основний набір даних (категорії, товари, виробники, характеристики) завантажується з файлу автоматично, окремо вмикати їх не треба. Керована опція в цьому шаблоні одна — режим повного дзеркала «Видаляти записи в базовому каталозі, яких немає в завантаженому файлі»; решта поведінки задана й перемикачів не має. Радимо перший запуск зробити на невеликому або тестовому файлі й перевірити результат — не тільки очима по кількох картках, а й за цифрами журналу та колонками сітки, — і лише переконавшись, що все стало правильно, вантажити повний файл і ставити шаблон на розклад.
1
Джерело даних — локальний файл або зовнішнє посилання2
Блок «Що завантажувати»- Оберіть, звідки брати файл: завантажити з комп'ютера чи вказати зовнішнє посилання.
- Опція визначає, чи видаляти в базовому каталозі записи, яких немає у завантаженому файлі.
Дві найчастіші несподіванки — валюта й порожня наявність. Якщо ціни у файлі не у вашій базовій валюті, переконайтесь, що курс для цієї валюти в системі заданий, інакше перерахунок не відбудеться. А порожнє поле наявності Prom трактує як «немає в наявності» — тож незаповнена колонка сховає товари з продажу.
Розбір частих проблем
| Що ви бачите | Чому так | Що зробити |
|---|---|---|
| «Файл не є книгою XLSX. Prom.ua, Satu.kz і Deal.by вивантажують каталог у форматі .xlsx — старий .xls не підтримується.» | Завантаження читає тільки .xlsx; .xls і .csv відхиляються до розбору |
Відкрити файл в Excel і зберегти як «Книга Excel (.xlsx)»; каталог не змінився (структура файлу) |
| «Файл не вдалося передати на сервер. Можливо, він завеликий або зв'язок обірвався. Код помилки ...» | Файл не доїхав до сервера: уперся в обмеження розміру або обірвався зв'язок | Повторити або віддати файл посиланням замість вивантаження з комп'ютера (межі) |
| «Не вдалося прочитати файл:» і далі текст помилки | Книга пошкоджена або це не та книга — розбір упав на першому ж кроці | Перезберегти файл у Excel і запустити знову; у каталозі нічого не змінилося (обрив) |
| «Частина даних не збереглася: база відхилила запит.» | Прогін дійшов до кінця, але частина запитів не пройшла — у каталозі не всі дані з файлу | Запустити завантаження ще раз: повтор безпечний і дублів не робить (повторний запуск) |
| «Операція перервана користувачем!» | Натиснули «Зупинити»; що встигло змінитися, залежить від моменту зупинки | Подивитися, до якого кроку дійшов журнал, і запустити наново (обрив) |
| «Скасовано завантаження за розкладом, причина - завантажується інший шаблон (конфлікт обробки даних).» | Два завантаження одночасно не запускаються — у цей момент вантажився інший шаблон | Нічого: прогін піде наступного разу за розкладом. Потрібно зараз — дочекатися й запустити вручну |
| «Файл для завантаження не вибрано.» | Відкрито вкладку «Файл», але сам файл не обрано | Обрати файл або перейти на вкладку з посиланням і вказати адресу |
| Прогін завершився, а в каталозі нічого не змінилося | У картках стоїть «Не оновлювати», або у файлі немає колонок із потрібними заголовками | Звірити «Дата оновлення» в сітці й цифри журналу (перевірка), потім — прапорці картки (чому не оновлюється) |
Часті питання
Куди потрапляють поля Prom, яких немає в стандартній картці (оптова ціна, знижки тощо)?
Elbuz створює під них додаткові поля прямо в базовому каталозі під час першого імпорту й записує туди значення. Тому картка зберігає вміст файлу Prom повністю, а не лише кілька стандартних полів. Ці ж поля потім використовуються для вивантаження назад.
Що буде, якщо у файлі не заповнено ідентифікатор товару?
Elbuz спробує зіставити товар за внутрішнім номером Prom (Унікальний_ідентифікатор). Якщо і його немає — товар вважається новим. Тому файл без жодних ідентифікаторів при повторному завантаженні наробить дублів; надійніше брати файл, вивантажений із самого Prom, де ідентифікатори вже проставлені. У самому Prom «Ідентифікатор_товару» — обов'язкове поле саме з цієї причини.
Код_товару — це і є ідентифікатор для оновлення?
Ні. Код_товару — це ваш артикул (SKU, до 25 символів), він записується в поля «артикул» і «MPN» картки. Для впізнавання товару при повторному імпорті Elbuz використовує внутрішній ідентифікатор Prom, а не артикул, бо артикул продавці іноді змінюють.
Я створив новий товар у Elbuz — Prom підхопить його при вивантаженні?
Так. Новий товар отримує власний UUID, який на вивантаженні йде в колонку Ідентифікатор_товару, а «Унікальний_ідентифікатор» лишається порожнім. Prom бачить Ідентифікатор_товару, якого в нього немає, і додає товар як новий, присвоївши свій внутрішній номер. Наявні товари при цьому оновлюються за їхнім Ідентифікатором_товару. Головне — не заповнювати «Унікальний_ідентифікатор» руками для нових товарів.
Чому не оновилась українська назва чи опис товару?
У Prom українська версія оновлюється, лише якщо у файлі заповнені обидва українські поля — і назва (Назва_позиції_укр), і опис (Опис_укр). Заповнене одне з них Prom проігнорує. Тримайте це правило, коли готуєте файл.
Чому наявність на вивантаженні не збігається з тим, що було у файлі?
Бо поле наявності рахується формулою з поточного статусу товару у вашому каталозі, а не береться з файлу «як є». Це навмисно: при вивантаженні назад на Prom іде актуальна наявність, а не застигла на моменті імпорту.
Товар не оновився при повторному імпорті — чому?
Найчастіше на ньому стоїть прапорець «Не оновлювати» — тоді не змінюються ціна, залишок, наявність, категорія, виробник, габарити й додаткові поля Prom. Або стоїть «Фіксована ціна» — тоді оновиться все, крім ціни. Але назву, опис і meta-поля завантаження перезаписує навіть у товару з прапорцем «Не оновлювати», а характеристики для товарів із файлу видаляються й записуються наново.
Видалив зайве дзеркальним режимом — як повернути?
Кнопки скасування й кошика немає: рядки прибираються з бази остаточно. Робочий шлях — повторно завантажити той самий файл, але повний: картки повернуться за тим самим Ідентифікатором_товару, тож зв'язок із Prom не порушиться. Не повернуться запитання-відповіді, зв'язки «супутні товари», прив'язка рядків прайс-листів і правила розподілу на видалені категорії, а внутрішній номер картки буде новим — посилання з уже виписаних документів на неї стане недійсним. Якщо повного файлу немає, лишається нічна копія бази, але відновлення з неї в інтерфейс не виведене й переливає базу цілком.
Завантаження обірвалося на середині — що з даними і чи можна запустити ще раз?
Спершу програма читає файл цілком і каталогу не чіпає, тому обрив на читанні не змінює нічого. Якщо обірвалося вже на перенесенні в каталог, відкоту немає: що встигло записатися — записалося (виняток один — заміна фотографій, вона обгорнута транзакцією). Повторний запуск безпечний: проміжні таблиці створюються заново, а вже створені товари знаходяться за ідентифікатором і оновлюються, а не задвоюються. Дублі робить тільки файл без ідентифікаторів товару.
Що станеться, якщо зняти з шаблону «Активний»?
Зупиниться завантаження за розкладом — і все. Налаштування, посилання на файл, сам розклад і всі раніше завантажені товари лишаються на місці; повернули «Активний» — працює далі. Ручний запуск при цьому не блокується: кнопки «Завантажити цей шаблон» і «Завантажити» спрацюють і на вимкненому шаблоні.
Чому не завантажились характеристики?
Характеристики завантажуються з файлу автоматично, окремо вмикати їх не треба. Якщо в товарі їх немає, значить у файлі не було трійок колонок «Назва / Одиниця_виміру / Значення характеристики» або їх не розпізнано за заголовком — колонки мають іти саме в цьому порядку.

