
Главная боль магазина в нескольких каналах одновременно — продать одну и ту же единицу товара два раза, через сайт и через Telegram, в течение пяти минут. На Serkl такой сценарий заранее перекрыт: на каждый артикул — один общий остаток, видимый сразу во всех каналах, и резерв ставится в момент оформления заказа, а не оплаты. Разбираем, что происходит с товаром в магазине от прихода до отгрузки и где у Serkl граница.
Эта статья написана командой Serkl — мы заинтересованная сторона. Старались показать и сильные стороны, и места, где учёт остатков в Serkl пока не дотягивает. Если кажется, что недостаточно критичны — напишите, поправим.
Самая болезненная история в магазине, который продаёт сразу в нескольких местах, — продал последнюю единицу дважды. Через сайт оплачивает один покупатель, через Telegram второй, разница в пять минут. Один заказ отгружается, второй приходится возвращать с извинениями, скидкой на следующий раз и минусом доверия. История стоит дешёво на одном эпизоде, дорого на десятом — продавец перестаёт верить собственным цифрам и заводит отдельную табличку «реальные остатки».
Эта ситуация — не про невнимательность. Она про то, что у магазина нет одной общей цифры остатка, видимой во всех каналах продаж. Когда такая цифра есть и она обновляется в момент оформления заказа (а не оплаты), второй покупатель уже видит «нет в наличии» — независимо от того, в каком канале он пытается купить.
Дальше — про то, как такая цифра собирается в Serkl, через какие точки она проходит вместе с товаром (приход, продажа, отмена, возврат) и где у этой схемы есть рамка.
Приход и размещение: артикул как место, в которое можно положить
Первое движение — товар появляется в магазине. Продавец привёз 20 кружек коллекции «Лето» в двух вариантах: 12 синих и 8 зелёных. Прежде чем эти кружки можно показать покупателю, у магазина должно быть место, в которое они кладутся учётно.
Это место в Serkl — артикул. Артикул — отдельная учётная единица на каждый продаваемый вариант (а не на товар целиком). Синяя кружка 350 мл и зелёная кружка 500 мл — два разных артикула. Не один товар «Кружка Лето» с количеством 20 штук, а две карточки в учёте, у каждой своё количество и своя история.
Это разделение принципиальное. В реальном магазине «кружка Лето» — не единое целое. Синяя может закончиться, а зелёная остаться в продаже; синяя приходит чаще, зелёную делают на заказ; у синей одна цена, у зелёной — другая, потому что глазурь дороже. Учёт на уровне товара (а не варианта) ломается на первом же товаре с двумя цветами — а в небольшом магазине с авторскими товарами это правило, не исключение.
Артикул всегда привязан к варианту товара в каталоге. Меняется вариант — это другой артикул. У каждого артикула — уникальный код (продавец задаёт сам или код подставляется автоматически) и учётный признак: ведём по нему остатки или нет. Услуги, цифровые товары, товары под заказ от поставщика — учёт не ведётся. Кружки на полке — ведётся.
И второе место для прихода — склад. Склад в Serkl — это физическая точка, где артикул лежит. Дом, мастерская, угол у курьера, ПВЗ-консолидатор, магазин на Тверской. На каждом складе — свой остаток для каждого артикула. Один артикул может лежать сразу на нескольких складах: 7 синих кружек дома, 5 в мастерской — итого 12. Приход заводится в админке так: «пришло 12 шт. артикула KER-LETO-BLU-350 на склад "дом", 0 на склад "мастерская"», и продавец дальше распределяет руками.
В стартовой версии Serkl все склады равноправны: общий остаток по всем складам показывается покупателю как одна цифра, без выбора склада за продавца. Какой склад использовать при сборке — продавец решает сам. Приоритеты складов («сначала с ближайшего к покупателю», «сначала с того, где меньше всего») — в наших планах, срок не зафиксирован.
Видимость в каналах: одна цифра для всех точек продаж
После прихода товар нужно показать. Магазин в Serkl — один. Каналы продаж (веб-витрина, мини-приложение в Telegram, страница в VK) — это разные точки одного и того же магазина, с одной общей базой товаров и одной общей базой остатков.
Это значит, что синхронизация по каналам — не «выгружаем из админки в каждый канал по расписанию каждые 15 минут», а свойство архитектуры: каждый канал привязан к тем же складам, что и остальные, и у каждого артикула есть одна доступная цифра, общая для всех каналов. Эта цифра одновременно видна на сайте, в мини-приложении в Telegram и в группе VK. Продавец списал артикул со склада или зарезервировал его под заказ — доступная цифра обновляется, и через секунду в любом канале её видно одинаково. Никакой задержки, никакой кнопки «обновить остатки в Telegram», никаких писем «упс, последняя продалась пять минут назад в другом канале».
Здесь же видна разница с маркетплейсами. Магазин в Serkl — это ваш собственный магазин в нескольких каналах продаж, и он работает как одно целое. Wildberries, Ozon, Я.Маркет — другая категория. Это не «ещё одна витрина магазина», а вторая система, между которой и Serkl ходят остатки. На старте такое подключение делается через выгрузку и периодический обмен — отдельной статьёй («Маркетплейсы и Serkl», планируется).
Дополнительно к видимости в каналах — уведомления при низких остатках. Эта функция в наших планах, срок не зафиксирован: продавец задаст один раз порог («предупредить, если осталось две штуки или меньше»), и когда какой-то артикул проседает — придёт уведомление в админку или на email. На старте такого механизма нет — продавец отслеживает низкие остатки глазами, открывая список артикулов в админке, и сам подаёт сигнал «пора заказывать поставку».
Резерв при оформлении: точка, где закрывается двойная продажа
Самое тонкое место учёта остатков — момент покупки. Между «покупатель оформил заказ» и «покупатель оплатил» проходит секунды, минуты или часы. В эти секунды-минуты-часы товар нельзя продать второй раз через другой канал — иначе случится сценарий из открытия: два оплаченных заказа на один экземпляр.
Это закрывается резервом. Резерв — отметка на остатке, что артикул уже занят под оформленный заказ. У каждого артикула есть три цифры:
- На остатке — сколько физически лежит на складах.
- В резерве — сколько уже обещано под оформленные заказы.
- Доступно = на остатке минус в резерве. Это и есть та цифра, которая видна во всех каналах продаж.
Резерв ставится в момент оформления, а не оплаты — это единственный режим. Между «нажал оформить» и «ввёл данные карты» проходят десятки секунд, а в часы пиковых распродаж — минуты, и продать товар через другой канал в это окно — самый частый источник двойных продаж. Резерв при оформлении это окно закрывает: с момента, когда первый покупатель собрал состав заказа, доступная цифра уменьшается, и второй покупатель в Telegram уже видит «нет в наличии», даже если первый ещё не дошёл до оплаты.
Дальше у резерва типичный жизненный цикл:
- Заказ оплачен — резерв сохраняется, товар уже занят.
- Заказ собран и отгружен — резерв списывается с остатка: «на остатке» уменьшается на единицу, «в резерве» возвращается к нулю.
- Заказ отменён до отгрузки (передумал, оплата не прошла, истёк срок ожидания оплаты) — резерв возвращается в доступные.
- Заказ вернулся, товар годный — остаток восстанавливается.
- Заказ вернулся, товар повреждён — остаток не восстанавливается, продавец делает отдельную корректировку «списать как брак» с комментарием.
Главный смысл этой ткани — после первого оформления второй покупатель в любом канале видит в корзине «нет в наличии». Сценарий «два покупателя оплатили одну кружку с разницей в пять минут» закрыт не правилом, не предупреждением, а тем, что между «оформил» и «оплатил» уже стоит флажок «занято».
Подробнее про заказы и оплату — в «Как устроены Заказы и продажи на Serkl». Про передачу перевозчику, расчёт стоимости и трекинг — в «Как устроена Доставка на Serkl».
Где учёт упирается: партии на приходе, серийники на отгрузке, расхождения при инвентаризации
Граница продукта видна не отдельной H2 «Чего нет», а в тех узлах, где она становится тонкой.
На приходе — нет партионного учёта (FIFO/LIFO). В Serkl остаток артикула — одна цифра, без разбивки по партиям с датой поступления и закупочной ценой. Если бизнес устроен на партиях — продукты с разным сроком годности, ткани с разным метражом, фарма с разными сериями, — этого не хватит. Тогда нужен МойСклад или 1С: Управление торговлей, под которые партии — родная задача. Партионный учёт в наших планах, срок не зафиксирован.
На отгрузке — нет учёта по серийным номерам. Электроника, ювелирка, любые товары, где каждый экземпляр имеет уникальный номер и его нужно отдавать конкретному покупателю — на старте такого различения нет. Если нужно — каждый экземпляр заводится как отдельный артикул, что нелинейно усложняет каталог. Учёт по серийным номерам в наших планах, срок не зафиксирован.
На размещении — нет автоматического выбора склада «откуда отгрузить». Все склады равноправны, доступная цифра общая. Если у магазина 20+ складов и нужны приоритеты, автоматические переводы между складами и штрихкодирование на каждой полке — это другой класс задачи, под него — МойСклад или 1С. Приоритеты складов в наших планах, срок не зафиксирован.
На инвентаризации — нет полной процедуры с актами расхождений. Сверка фактического остатка и системного — пока ручная. Продавец пересчитывает товар на полке, корректирует цифры в админке, оставляет комментарий «нашёл в коробке у себя на полу». Полноценная процедура с печатью акта расхождений и историей правок — в наших планах, срок не зафиксирован.
На связи с поставщиками — нет полноценной интеграции. Приход заводится вручную: в админке отмечается «пришло 20 шт. на склад "дом"». Электронные накладные с автоматическим списанием в кредит и обновлением остатков — в наших планах, срок не зафиксирован. Если в бизнесе обязательная первичка по 1С-формату и обмен по электронному документообороту — это сейчас не покрывается.
Лимиты по тарифам. Количество одновременно подключённых складов зависит от тарифа: на младших — один-два склада, на старших — больше; на верхнем тарифе жёсткого лимита нет. Точные цифры — на странице тарифов /pricing, они могут меняться.
Куда смотреть, если рамка стартовой версии не подходит:
- МойСклад — российский SaaS специально под склад: партии, серийники, FIFO/LIFO, штрихкодирование, инвентаризации с актами. Подходит, если складской учёт — основная часть бизнеса.
- 1С: Управление торговлей — для бизнеса с печатью первички, обменом с поставщиками по электронному документообороту и сложной матрицей учёта. Требует внедрения и обычно подрядчика.
- Битрикс24 + 1С — если уже работаете в экосистеме Битрикса.
- Своё решение — если есть инженер на подряде и точная складская логика, которой нет на рынке готовой.
Граница — не недостаток продукта, а признание разницы классов: что-то покрывается магазином на Serkl, что-то — отдельной складской системой. Когда дорастёте до партий, серийников или сложных схем отгрузки — этот раздел поможет понять, в какой узел смотреть.
Возвращаясь к двум покупателям и одной кружке
Сценарий из открытия в магазине с правильно собранным учётом остатков просто не случается. Когда первый покупатель доходит до экрана «оформить заказ» на сайте, в эту секунду доступная цифра становится «нет в наличии» — и второй покупатель в Telegram её такой и видит. Не через 15 минут, не после нажатия «обновить», а в моменте: одна цифра обновилась, и в этом обновлении упакована вся работа учёта остатков — артикул как учётная единица, склад как точка хранения, резерв как флажок «занято под заказ».
В админке у продавца — одна цифра на каждый артикул, видимая в любом канале продаж. Никаких таблиц в Excel, никакой ручной синхронизации, никаких разговоров «увы, последняя продалась пять минут назад». И если в этом году бизнес дорастёт до партий, серийников или сложной матрицы складов — будет понятная точка, в которой надо переезжать на МойСклад или 1С.
Связанные статьи:
- «Как устроен модуль CRM на Serkl» — про группы клиентов, по которым настраиваются адресные акции и условия доступа к товарам.
- «Как устроен модуль Акций на Serkl» — про промо и кампании: что меняется, для кого, в какие сроки.
- «Как устроена Доставка на Serkl» — про передачу перевозчику, расчёт стоимости в корзине, трекинг и восстановление остатка при возврате.
- «Как устроены Заказы и продажи на Serkl» — про резервирование при оформлении, списание после отгрузки и возвраты.
- «Как устроен Каталог на Serkl» — про артикул как учётную единицу, привязанную к варианту товара в каталоге.
Артем Маршалкин — основатель Serkl Platform. Раньше запускал магазины с оборотом до 1 млн ₽/мес.