Як зібрати склад магазину: які товари в ньому будуть

24 хв

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

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

  • Сайти діляться за розділами каталогу — одна операція розкладає тисячі товарів по магазинах за їхніми категоріями.
  • Вітрина продає товари певних постачальників — оновлення базового каталогу саме заводить у магазин їхні товари.
  • Магазини ведуться на сайті — склад приходить разом із даними сайту.
  • Окремий товар має бути лише на одному сайті — прапорець у картці товару, з власною ціною й залишком.

З чого почати: розставте магазини в картках категорій і запустіть «Розкласти товари по магазинах».

Що вміє: звідки береться склад магазину

Поки активний магазин один, жоден із цих механізмів не працює — що таке магазин і навіщо їх кілька, описано в статті Як вести кілька магазинів з одного каталогу.

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

Меню
Довідники → Базовий каталог товарів → Магазини → бургер
Картки
товару, категорії й контрагента — блок «Магазини»
Картка джерела прайсу
секція «Нові товари» → «Прив'язка товарів до магазину»
Налаштування
Кабінет → Налаштування системи → Каталог → «Правила обробки даних»
Право доступу
вікно «Магазини» і блок «Операція "Розкласти товари по магазинах"»
Підготувати
другий активний магазин у довіднику

Коли склад магазину задає ваш сайт

Спершу умова, яка скасовує все інше. Якщо ваш сайт підключений тунелем Elbuz і присилає свої магазини, джерелом істини стає сайт. Таке завантаження заводить і оновлює самі магазини в довіднику: назву, посилання, активність, порядок, опис, зображення й координати воно бере з сайту.

А в товарів, для яких сайт прислав склад, спершу знімаються всі магазини, потім записуються надіслані; якщо активних магазинів більше одного, до них дописується ще й основний.

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

Товари, по яких сайт складу не прислав, свої магазини зберігають, а якщо сайт не присилає магазинів узагалі — довідник завантаження не чіпає, а зв'язки пише тільки новим товарам: при двох і більше активних магазинах вони лягають в основний.

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

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

Усім іншим склад магазинів задають в Elbuz — руками або автоматично.

Як віднести до магазину окремий товар чи категорію

Картка товару, блок «Магазини»

У блоці перелічені всі магазини довідника, у кожного — прапорець «Відображати товар» і колонки «Ціна», «Ціна РРЦ», «Ціна собівартість», «Наявність», «Кількість».

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

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

Дві особливості цього блоку, на яких спотикаються:

  • проти магазину, до якого товар не входить, у колонці «Наявність» стоїть «Немає на складі» — це заглушка для відсутнього рядка, а не стан товару;
  • собівартість за магазином задається саме тут — колонка «Ціна собівартість» у цьому блоці зберігається, а поле «Собівартість» у самій картці товару лише для читання, бо приходить із прайсу чи специфікації.
Блок «Магазини» в картці товару
1Відображати товар
2Наявність
  1. Відображати товар — прапорець, яким товар відносять до конкретного магазину.
  2. Наявність — статус і кількість тут свої для кожного магазину.

Картка категорії, блок «Магазини»

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

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

Важливо не переплутати: це прив'язка категорії. Товари всередині неї до магазину від цього не потрапляють — їх розкладає операція «Розкласти товари по магазинах».

Як розкласти товари по магазинах за категоріями

Єдина масова операція вікна й основний спосіб зібрати склад магазинів, коли товарів тисячі. Логіка одна: товар іде за своїми категоріями.

Пункт бургера спершу робить предрозрахунок — питає в сервера, скільки зв'язків додасться і скільки знімється, — і лише потім показує підтвердження з дослівним описом того, що станеться:

Розрахунок: буде додано звʼязків — ‹скільки›, знято — ‹скільки›.

Товар буде віднесено до тих магазинів, до яких входять його категорії. Склад магазинів у товарів перезбирається: зайві звʼязки знімаються, відсутні додаються. Звʼязки, де задано ціну, собівартість або залишок за магазином, зберігаються — вони містять дані.

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

  1. додає зв'язок для кожної пари «товар — магазин», де хоча б одна категорія товару входить до цього магазину, а зв'язку ще немає;
  2. знімає зайві зв'язки — але тільки порожні: ті, де ціна, РРЦ, собівартість, кількість і статус наявності нульові, а до зв'язку не прив'язано ні постачальника, ні товар із його прайсу;
  3. не чіпає товари без категорій — у них немає джерела складу, і брати його нема звідки.

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

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

Дві верхні розвилки — місця, де операцію можна зупинити, нічого не змінивши. Після «Розкласти» в журнал спершу пишеться рядок про запуск, потім зв'язки знімаються й додаються, і наприкінці з'являється рядок із числами
нітакнітакнітакБургер → «Розкласти товари помагазинах»Предрозрахунок:скільки зв'язків додати і скількизнятиВідповідь від сервераприйшла?Червоне повідомлення зпомилкою.Нічого не зміненоУ підтвердженнінатиснули «Розкласти»?Підтвердження закрите.Нічого не зміненоРядок у журналі роботи:«Розкладка … запущена»Знімаються зайві порожні зв'язкив активних магазинахДодаються відсутні зв'язкиза категоріями товарівРядок у журналі роботиз числами доданих і знятихСеред зайвих були зв'язкиз цінами або залишками?«Готово. Додано звʼязків: …,знято: …»Те саме плюс«Збережено звʼязків із цінами абозалишками: …»
  • Початок або кінець
  • Дія або результат
  • Розвилка: далі шлях залежить від відповіді

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

Операція синхронна й без обмеження за розміром: на великих каталогах вона йде хвилинами, поки висить синій напис «Зачекайте...». Порядок цифр такий: на акаунті з кількома десятками магазинів і повним каталогом одне натискання створило б понад 4,3 мільйона зв'язків — саме тому предрозрахунок і показують заздалегідь. Запускайте її тоді, коли можете зачекати.

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

Як склад наповнюється сам

П'ять випадків, коли зв'язок з'являється без вашої участі (і всі вони мовчать, поки активний магазин один). Два перші — масові: саме ними склад магазину набивають ті, у кого магазинів багато.

  • Постачальник, віднесений до магазину. У картці контрагента є секція «Магазини», а всередині неї — перелік магазинів із колонками «Активність» і «Назва магазину». Кожне оновлення базового каталогу заводить у такий магазин усі товари, по яких у його постачальників є рядок прайсу з ціною або залишком, і одразу записує їм ціну, РРЦ, собівартість, статус наявності й кількість за цим магазином. Так вітрини діляться за постачальником, а не за каталогом. Наповнюються так тільки увімкнені магазини: магазин зі знятою «Активністю» в довіднику оновлення пропускає, навіть якщо постачальники до нього віднесені.
  • Магазин, заданий джерелу прайсу. Поле «Прив'язка товарів до магазину» в картці джерела, секція «Нові товари», за замовчуванням ---. Попри назву секції, магазин проставляється всім рядкам цього прайсу, і при кожному оновленні каталогу до магазину потрапляють усі зіставлені товари цього постачальника, у яких є ціна, — не тільки нові.
  • Нова категорія. Створена всередині гілки конкретного магазину — потрапляє тільки до нього; створена деінде — до всіх активних магазинів, основний включно. Руками нічого доводити не треба. Виняток один: коли активний магазин у системі один, зв'язків програма не пише взагалі — вони там ні до чого.
  • Новий виробник і новий контрагент. Дописуються в усі активні магазини.
  • Новий товар з імпорту файлів або каналу за API. Імпорт кладе товар у магазин свого джерела; канали (Rozetka, Shopify, eBay, Amazon та інші) — у магазин з ID = 1, і тільки Хорошоп — в основний.
Секція «Магазини» в картці контрагента-постачальника
1Колонка «Активність»
2Колонка «Назва магазину»
  1. Колонка «Активність» — позначка, що постачальник входить до складу магазину.
  2. Колонка «Назва магазину» — перелік вітрин, до яких віднесено цього постачальника.

Понад це є ще одне налаштування, яке змінює правило для всіх завантажень одразу: «Склад магазинів у нових товарів — за категоріями» у Кабінет → Налаштування системи → Каталог → «Правила обробки даних». За замовчуванням вимкнене. Опис у самій програмі: «Новий товар із прайс-листа чи імпорту потрапляє до тих магазинів, до яких віднесено його категорії.»

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

Група «Правила обробки даних» з переключувачами режиму кількох магазинів
1Режим кількох магазинів
2Склад магазинів у нових товарів — за категоріями
  1. Режим кількох магазинів — вимкнено за замовчуванням; вмикають, коли ведуть кілька вітрин.
  2. Склад магазинів у нових товарів — за категоріями — вимкнено за замовчуванням; визначає, як новий товар потрапляє до магазинів.

Через що товар випадає з магазину

Зворотний бік того самого списку. Вісім причин, і жодна з них не показує попередження про масштаб:

Що прибирає товар зі складу магазину
Що сталосяЩо саме прибирається
Знято прапорець «Відображати товар» у картці товаруОдин товар з одного магазину, разом із його ціною й залишком по магазину
Кнопка «Розкласти товари по магазинах»Тільки порожні зайві зв'язки; ті, де є ціна або залишок, лишаються
Видалено магазинУсі зв'язки цього магазину: товари, категорії, контрагенти, виробники, статті
Видалено категорію або гілку дереваТовари, для яких ця категорія основна, видаляються цілком — разом з усіма своїми магазинами, цінами й залишками. Товари, що лежать у категорії додатковим зв'язком, лишаються. Сама категорія при цьому зникає з усіх магазинів
Видалено товар — поштучно або пакетноУсі магазини цього товару
Завантаження даних із сайту тунелемУсі магазини товару, далі повертаються надіслані сайтом плюс основний
Імпорт CommerceML, YML або PromМагазини товарів, які імпорт позначив видаленими
«Перевірка цілісності БД»Зв'язки товарів і магазинів, яких уже не існує

А ось чого в цьому списку немає, хоча багато хто цього очікує: зв'язків із магазинами не видаляє.

Якщо товар втратив зв'язок із поставкою, рядок лишається на місці — програма обнуляє ціну й залишок і ставить статус «немає в наявності». Товар при цьому зі складу магазину не зникає, і повертати його руками не доведеться.

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

Сценарії

Вітрини діляться за розділами каталогу

Задача: у кожного сайту свій набір категорій, і товари мають іти за своїми категоріями.

Що ввімкнути: у картці кожної категорії, блок «Магазини», поставити прапорці потрібних магазинів; у вікні «Магазини» натиснути «Розкласти товари по магазинах»; щоб нові товари з прайсів та імпорту розкладалися так само, увімкнути «Склад магазинів у нових товарів — за категоріями».

Що вийде: товар потрапить до кожного активного магазину, до якого входить хоч одна його категорія, а порожні зв'язки з іншими магазинами знімуться.

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

Вітрина збирається з товарів певних постачальників

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

Що ввімкнути: у картці контрагента-постачальника, секція «Магазини», відмітити в колонці «Активність» потрібний магазин.

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

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

Магазини й асортимент ведуться на сайті

Задача: сайт підключений тунелем Elbuz, і розподіл товарів по вітринах уже зроблено на боці сайту.

Що ввімкнути: в Elbuz нічого — магазини й склад приходять із завантаженням даних із сайту.

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

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

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

Розкладку перервано

Розкладка робить два кроки підряд: спершу знімає зайві порожні зв'язки, потім додає відсутні. Перед першим кроком програма пише в журнал роботи рядок «Розкладка товарів по магазинах за категоріями запущена.», а рядок із числами — тільки після того, як обидва кроки завершилися.

Якщо відповідь від сервера не прийшла, замість чисел з'явиться червоне повідомлення з текстом помилки, а в журналі буде рядок про запуск без підсумкового. Що встигло записатися, те й лишиться — наприклад, зайве вже зняте, а відсутнє ще не додане.

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

Розклали не так

Списку знятих зв'язків програма не зберігає: у журналі роботи тільки два числа, а колонки з магазинами в сітці базового каталогу немає.

Знімає операція за правилом, яке відтворюється: з активного магазину зникли порожні зв'язки тих товарів, у яких є категорії і жодна з них до цього магазину не входить. Тому склад повертають не пошуком по товарах, а тим самим механізмом, яким він збирався:

  • склад збирався за категоріями — поставте потрібні прапорці в блоці «Магазини» карток категорій і натисніть «Розкласти товари по магазинах» ще раз. Операція додасть зв'язок кожному товару, чия категорія входить до магазину. Знімалися лише зв'язки з нульовими ціною, РРЦ, собівартістю, кількістю й статусом наявності й без прив'язаного постачальника чи товару з його прайсу, тож повернений зв'язок такий самий порожній, як знятий, — даних за магазином ви не втратили;
  • склад збирався за постачальником — зв'язки, які хоч раз заповнило оновлення базового каталогу, мають ціну, кількість або статус наявності (після втрати поставки — «немає в наявності»), і під зняття не потрапляють. Зняті ж зв'язки наступне оновлення базового каталогу заведе знову тим товарам, по яких у постачальників магазину є дані, так само, як наповнює такий магазин завжди;
  • склад приїжджає з сайту тунелем — наступне завантаження з сайту знову запише склад тим товарам, для яких сайт його надішле.

Перевірити результат можна в режимі кількох магазинів: вузол магазину в дереві показує його склад.

Симптом, причина і що зробити
Що ви бачитеЧому такЩо зробити
«Готово. Додано звʼязків: 0, знято: 0.» Жодна категорія не віднесена до жодного активного магазину Розставити прапорці в картках категорій, блок «Магазини», і натиснути кнопку ще раз (розкласти товари)
«Збережено звʼязків із цінами або залишками: ‹скільки› — їхній склад правте в картці товару.» Зайві зв'язки із заповненою ціною чи залишком операція не знімає: у них лежать дані Зняти вручну: картка товару → блок «Магазини» → прапорець «Відображати товар» (картка товару)
Під вузлом магазину в дереві сітка порожня, хоча товари в каталозі є До цього магазину не віднесено жодного товару — режим кількох магазинів показує саме склад Прапорець у картці товару або кнопка «Розкласти товари по магазинах» (розкласти товари)
У картці товару проти магазину написано «Немає на складі», хоча товар у наявності Рядка для цього магазину немає зовсім, і в колонці показується заглушка Поставити прапорець «Відображати товар» і задати наявність по магазину (картка товару)
Треба задати собівартість, а поле «Собівартість» у картці товару не редагується У самій картці це поле для читання: значення приходить із прайс-листа або зі складу набору Задавати собівартість у блоці «Магазини» картки товару — колонка «Ціна собівартість» там зберігається (картка товару)
«Зачекайте...» висить довго Розкладка товарів по магазинах іде одним синхронним запитом і на великому каталозі триває хвилини Дочекатися відповіді з числами; вікно не закривати
Розставлені вручну магазини зникли після завантаження з сайту Завантаження тунелем знімає всі магазини товару й повертає склад за даними сайту Розподіляти асортимент на боці сайту — в Elbuz ці галочки не втримаються (склад із сайту)

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

Магазини в нас діляться за постачальниками. Кнопка «Розкласти товари по магазинах» допоможе?

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

Що станеться з ручними галочками, якщо сайт підключений тунелем?

Вони не втримаються: кожне завантаження даних із сайту знімає з товару всі магазини й повертає надіслані сайтом плюс основний. Розподіляйте асортимент на боці сайту (склад із сайту).

Чому в картці категорії немає блоку «Магазини»?

Блок показується, тільки коли активних магазинів два і більше. Заведіть або увімкніть другий магазин — блок з'явиться сам (картка категорії).

Чи можна вказати магазин колонкою в прайсі постачальника?

Можна, але програма шукає магазин за точним збігом назви з колонки з назвою в довіднику, тож будь-яка розбіжність лишить товар без магазину. Надійніше задати магазин у картці джерела, поле «Прив'язка товарів до магазину» (автоматичні шляхи).

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

Ні. Проведення документа змінює залишок і резерв на складі документа, а «Наявність» і «Кількість» у блоці «Магазини» картки товару не чіпає. Їх записують оновлення базового каталогу, завантаження з сайту тунелем і ручна правка в картці.

Суміжні теми

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