Вебформат

Главная/Блог/Сайты и e-commerce

Сайты и e-commerce8 июля 202610 мин

Склады и поставки: каждый покупатель видит свою картину наличия

Розничный клиент видит наличие по 17 городам оценкой "много" или "мало". Дилер - точные остатки и график поставок: около 6 млн единиц товара в пути по 790 позициям, горизонт - до 4 месяцев. Разбор, как одна витрина отвечает на вопрос "сколько есть?" каждому по-своему - и не ошибается ни в одной цифре.

Один товар - две картины наличия
Один товар - две картины наличия

Продавать оборудование по всей стране мало - нужно ответить покупателю на вопрос "а оно есть?". В компании с партнёрской сетью и импортными поставками простого ответа не существует: он зависит от того, кто спрашивает.

Розничному клиенту важно, есть ли товар поблизости: он выбирает между "заберу сегодня" и "подожду доставку". Дилеру важно другое - сколько единиц он может законтрактовать и когда придёт следующая партия. Он планирует закупку на месяцы вперёд и продаёт в том числе то, что ещё в пути.

При этом точный остаток - коммерческая информация. Знать, что на складе осталось три единицы, - значит понимать переговорную позицию поставщика. Показывать это всем покупателям нельзя.

Одна витрина должна отвечать на один и тот же вопрос по-разному - и не ошибаться ни в одной цифре.

Почему это не решается стандартным остатком

Стандартный интернет-магазин показывает всем одно и то же: число на складе или ярлык "в наличии". В этой задаче оба варианта не работают - по трём причинам.

  • Ответ зависит от того, кто спрашивает. Рознице нужна география: есть ли товар в её городе. Дилеру география не важна - ему нужны точка входа товара в сеть и объём, который можно законтрактовать.
  • Точное число - переговорная позиция. Показать всем, что осталось три единицы, - значит раскрыть свои запасы. Показать всем ярлык "в наличии" - не дать дилеру данных для планирования закупки.
  • Дилер покупает не остаток, а план поставок. Он заказывает под будущие партии, которых на складе ещё нет. Стандартная витрина знает только "есть" и "под заказ" - без количеств и дат.

Решение

Один товар - два разных ответа

Вот один товар в один и тот же момент времени - глазами двух покупателей.

Один товар, один момент времени - две картины наличия
Подкатной домкрат из рабочего каталога
Вопрос один: "сколько есть?". Ответ витрина строит под покупателя
витрина отвечает каждому по-своему
Розничный клиент
Вся география: товар есть в 12 городах
Наличие качественной оценкой: "много" или "мало"
Точные остатки и сроки поставок скрыты
≈300 шт
Дилер
Центральный склад и Нижний Тагил - точными числами
График поставок: количество и дата каждой партии
Заказ можно оформить под будущую поставку
1 000+ шт
Под карточками - максимум к заказу: обе цифры верны, они рассчитаны для разных условий. Пример - реальный товар рабочего каталога, количества округлены.

Розничный клиент видит географию: товар есть в двенадцати городах, где-то много, где-то мало. Этого достаточно, чтобы принять решение.

Дилер видит центральный склад в точных числах и, главное, график поставок: около 170 штук придёт в начале августа, ещё около 700 и около 250 - в сентябре. Поэтому он может заказать больше тысячи штук, хотя физически на складах лежат несколько десятков. Он покупает не остаток, а план поставок.

Это не выдача "под заказ" с неопределённым сроком: каждая партия названа количеством и датой. Всего в системе одновременно учитывается около шести миллионов единиц товара в пути - по 790 позициям. Горизонт планирования - до четырёх месяцев вперёд: дилер видит не только ближайшую поставку, но и весь график - когда придёт партия, которой хватит на квартал.

География: 17 складов

17 складов на витрине - от Москвы до Красноярска
17 городов на витрине
Наличие обновляется вместе с выгрузками из 1С
четыре куста сети - основные города
Центр
Москва
Урал
Екатеринбург - центральный склад
Нижний Тагил, Пермь, Уфа, Сургут
Поволжье
Казань, Волгоград, Пенза, Киров, Йошкар-Ола
Сибирь
Новосибирск, Омск, Красноярск, Барнаул, Кемерово
За городами на витрине стоят 22 склада учётной системы, включая партнёрские юридические лица, - об этом ниже.

Семнадцать складов: Урал, Сибирь, Поволжье, Москва. Наличие по ним обновляется вместе с выгрузками из 1С, поэтому покупатель видит актуальные данные, а не вчерашние.

Распределение ассортимента объясняет, почему дилеру важнее центральный склад, чем география. Три четверти всех товарных позиций лежат в Екатеринбурге - через него товар входит в сеть и оттуда расходится по стране. Региональные склады держат ходовые позиции для розницы поблизости.

Города - это фасад

Три уровня складов: покупатель видит географию, а не устройство сети
Что видит покупатель: города
17 складов от Москвы до Красноярска
"Москва" для покупателя - просто город с наличием
за каждым городом - склады учётной системы
Склады учётной системы
22 склада - собственные и партнёрские юридические лица
Два партнёра в одном городе складываются в один город витрины
под ними - детальные остатки
Детальные остатки
Разрез "склад × товар × дата прихода" - 14 636 записей
Наличие сегодня и будущие поставки
Остатки суммируются снизу вверх: сумма складов учётной системы всегда равна числу, которое видит покупатель.

За "Москвой" в карточке товара стоит склад регионального партнёра, за "Волгоградом" - сразу два партнёрских юридических лица. Покупателю эта организационная структура не нужна и не показывается: он видит город и наличие в нём.

Внутри система ведёт три уровня: город на витрине, склады учётной системы под ним и детальные остатки - по каждому складу, товару и дате прихода. Остатки суммируются снизу вверх, и число в карточке всегда равно сумме того, что лежит на складах партнёров.

Такая развязка даёт компании свободу: партнёр в городе может смениться, склад - разделиться на два юридических лица, и витрина при этом не потребует изменений.

Кому что видно - решает 1С

Два переключателя, которые задают картину наличия
1С:ERP
Здесь решают, кому что показывать
оба переключателя приходят выгрузкой из 1С
Набор складов
Какие города видит сегмент покупателей
На сайте это никто не настраивает
Право видеть поставки
Показывать ли точные числа и даты будущих приходов
две картины наличия на одной витрине
Розница и оптовые клиенты
Вся география
Наличие - "много" или "мало"
Сроки поставок скрыты
Дилеры
Центральный склад и Нижний Тагил - точным числом
График поставок на месяцы вперёд
Меняются условия работы с клиентом - меняется и витрина, без правок кода: сайт не решает самостоятельно, кому что показывать.

Картину наличия задают два переключателя, и оба приходят из учётной системы.

Первый - набор складов: какие города видит сегмент покупателей. Это не настройка в административной панели сайта, а отдельная выгрузка из 1С: у коммерческой политики единственный источник истины, и сайт не может разойтись с ней.

Второй - право видеть поставки: показывать ли точные числа и даты будущих приходов. Его получают дилеры.

Показательно, что "больше прав" здесь означает не "больше складов". Рознице открыта вся география, но в качественной оценке - "много" или "мало". Дилеру открыты центральный склад и Нижний Тагил, зато в точных числах и с планом поставок. И это именно расширение возможностей: весь импорт входит в сеть через один центральный склад и уже оттуда расходится по стране, поэтому дилеру нужна точка входа товара, а не витрина городов. География важна рознице, центральный склад - профессиональному покупателю.

Сколько можно купить

Для каждого покупателя система считает максимум к заказу: сумма остатков на доступных ему складах плюс - если ему открыты поставки - всё, что уже в пути. Именно это число ограничивает корзину. Поэтому дилер добавляет в заказ больше тысячи штук при нескольких десятках на складе, а розничный клиент - около трёхсот: обе цифры верны, просто рассчитаны для разных условий.


Как это устроено внутри

РешениеКак сделано
Модель складовТри уровня: городской склад витрины → склад учётной системы (в том числе партнёрское юридическое лицо) → детальный остаток в разрезе "склад × товар × дата прихода". Связь по кодам из 1С, суммы сходятся на каждом уровне
Видимость складовМножественное свойство сегмента покупателей со списком складов; заполняется выгрузкой из 1С, а не вручную. Гость и непрошедший модерацию клиент получают набор складов по умолчанию
Право на поставкиПризнак на разделе справочника сегментов: сегмент наследует его принадлежностью к разделу - новый дилерский сегмент из 1С получает права автоматически
Качественный режимПороги "много / мало" задаются на вид номенклатуры, с общим значением по умолчанию: у крепежа и у подъёмников "много" - разные числа
Максимум к заказуСумма доступных остатков плюс товары в пути (для тех, кому они открыты); одно число ограничивает и карточку, и корзину
ПоставкиПартии группируются по "товар + город + дата прихода": несколько складов учётной системы с приходом на одну дату сливаются в одну строку графика
Свежесть данныхНаличие рассчитывается вне кеша страницы, отдельным механизмом отложенного контента: страница отдаётся из кеша, а остаток остаётся актуальным
НагрузкаВ каталоге остатки для всей страницы считаются одним пакетным вызовом - несколько запросов на страницу независимо от числа товаров
Дата самовывозаЕсли склад точки покрывает всю корзину - 3 дня; если корзину покрывает соседний склад сети - 5 дней (переброска); иначе - 15 дней (заказ у поставщика). Расчёт идёт по всем точкам сразу, покупателю показывается диапазон дат

Почему "много / мало" - это ветка расчёта, а не отдельный шаблон. Сделать две версии карточки кажется проще, но тогда пришлось бы поддерживать две ветки вёрстки и следить, чтобы они не разошлись. Вместо этого режим переключается одним условием в расчёте наличия: на выходе либо числа, либо статусы, а шаблон один. Добавить сегмент с новыми правилами - значит изменить данные в 1С, а не код сайта.

Что это дало бизнесу

РаньшеСтало
"Есть ли товар?" - вопрос менеджеру по телефонуОтвет в карточке, у каждого покупателя свой и всегда актуальный
Точные остатки видны всем или никомуТочные числа - только дилерам; рознице - "много / мало", без раскрытия переговорной позиции
О поставках дилер узнаёт у менеджераГрафик поставок в карточке: количество и дата каждой партии на месяцы вперёд
Продать можно только то, что лежит на складеДилер заказывает под будущую поставку: больше тысячи штук при нескольких десятках на складе
Партнёрская сеть видна покупателюПокупатель видит города; смена партнёра или разделение склада на юридические лица витрину не меняют
Правила видимости - настройки на сайте, живущие своей жизньюПравила приходят из 1С: новый сегмент и его права появляются на сайте без участия разработчика

В цифрах

ПоказательЗначение
Складов на витрине17 городов: от Москвы до Красноярска
Складов в учётной системе за ними22, включая партнёрские юридические лица
Записей о наличии11 086 по 8 538 товарам
Детальных остатков14 636 записей в разрезе "склад × товар × дата"
Товаров в пути790 позиций, около 6 млн единиц
Горизонт планирования поставокдо 4 месяцев вперёд
Сегментов покупателей19, из них 11 видят точные числа и график поставок
Обновление наличиявместе с выгрузками из 1С; очередь проверяется каждые ~10 секунд
Расчёт наличия на странице каталогаодин пакетный вызов независимо от числа товаров

Картина наличия - часть большой B2B-платформы: каталог, дилерский кабинет и двусторонний обмен с 1С. Что вошло в проект целиком - в кейсе B2B e-commerce платформы.

Нужна витрина, которая показывает наличие каждому по-своему?

Расскажите, как устроены ваши склады и поставки: своя сеть, партнёры, импорт. Покажем на живом проекте, как витрина отвечает каждому сегменту, и оценим перенос вашей логики из 1С.