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

Поэтому «реальное время» стоит понимать не как частоту обмена, а как допустимую задержку между фактом на складе и цифрой в канале. Для B2B-отгрузок она измеряется часами, для маркетплейсов — минутами, и от этого зависит, за что вообще имеет смысл платить.

Четыре места, где рвётся цепочка

Разрывы стоит перебирать именно в этом порядке — от самого частого и самого дешёвого в починке к самому редкому и самому дорогому.

  1. 1
    1. Движение зафиксировано задним числом

    Машину выпустили в 19:00, накладную провели в 10:00 следующего дня. Поставку разгрузили и поставили в зону приёмки, а оприходовали через два дня, когда дошли руки до сверки с УПД. Всё это время система показывает цифру, которая была верна вчера. Это самый частый разрыв и единственный, который чинится без денег — регламентом и запретом выпускать машину без проведённого документа.

  2. 2
    2. Обмен идёт по расписанию

    Ночной обмен между учётной системой и сайтом означает задержку до 24 часов; часовой — до часа. Разрыв честный и предсказуемый, и лечится он не всегда учащением: сначала стоит понять, какая задержка вообще допустима для вашего канала, потому что событийный обмен стоит денег и добавляет точку отказа.

  3. 3
    3. Остаток правят руками

    «Поправил, чтобы сошлось» — самый разрушительный разрыв, потому что он не оставляет следа. После ручной правки нельзя ни найти причину расхождения, ни доказать, что расхождения не было. Одна такая правка портит не одну цифру, а всю последующую диагностику по этой позиции.

  4. 4
    4. Товар в отборе, но резерва нет

    Комплектовщик снял пять штук с полки и везёт их на упаковку. Физически их на полке уже нет, в системе они ещё есть и доступны к продаже — и в этот момент их продают второй раз. На складе с несколькими каналами это даёт устойчивый поток отмен, у которого нет видимой причины: и остатки верны, и учёт верен, и всё равно не хватило. Механику разбора — в статье о резервировании товара под заказы.

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

схема процессаuchet-ostatkov-v-realnom-vremeni--01
Схема цепочки от движения на складе до цифры в канале продаж с четырьмя точками разрыва

Горизонтальная схема из пяти блоков слева направо: «Факт на складе» → «Фиксация движения документом» → «Остаток в учётной системе» → «Обмен» → «Цифра в канале продаж». Над стрелками между блоками — четыре красных разрыва с номерами и подписями: 1 «проведено задним числом, до 24 часов», 2 «обмен по расписанию, до 24 часов», 3 «ручная правка без документа», 4 «товар в отборе не зарезервирован». Под схемой подпись: «событийный обмен закрывает только разрыв 2». Чертёжный стиль, подписи по-русски.

Мгновенный обмен чинит только одно звено из четырёх — второе

Что «реальное время» значит для разных каналов

Допустимая задержка определяется не техникой, а длиной цикла заказа в канале. Если клиент принимает решение о покупке за 15 секунд, остаток обязан быть свежим в пределах минут. Если заявка неделю согласовывается, суточная задержка ни на что не влияет.

Канал продажДопустимая задержкаПрактическая частота обменаЧто происходит при превышении
Отгрузки B2B по заявкам4–8 часов2–4 раза в деньМенеджер обещает то, чего нет; дата отгрузки переносится, репутационные потери без прямых
Розничная точка на общем складе2–4 часаРаз в часПродавец подтверждает наличие, а товар уже уехал в отгрузку другому каналу
Интернет-магазин15–30 минутКаждые 5–15 минутЗаказ оформлен и оплачен на отсутствующий товар, дальше отмена и возврат оплаты
Маркетплейсы, схема со своего склада5–15 минутКаждые 5–15 минут или по событиюОтмена по вине продавца: помимо упущенной маржи бьёт по показателям карточки
Склад материалов под производствоСуткиНочной обменЗаявка на снабжение уходит на день позже, что заметно только на дефицитных позициях

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

Цена задержки: расчёт на 500 заказах в месяц

Считаем компанию с 500 заказами в месяц, средним заказом 8 000 ₽ и маржой 25 % — то есть 2 000 ₽ маржи на заказ. Точность остатков — 92 %, обмен с каналом продаж раз в час, резервирование при отборе не настроено.

Потери от продажи отсутствующего товара, месяц
Заказов в месяц500
Доля заказов, где система показала товар, которого физически нет2 % → 10 заказов
Разбор с клиентом: 10 заказов × 30 минут менеджера × 700 ₽/час3 500 ₽
Отменяется 40 % таких заказов: 4 × 2 000 ₽ упущенной маржи8 000 ₽
Остальные 6 отгружаются частями или позже: доплата доставки и повторная сборка по 600 ₽3 600 ₽
Итого15 100 ₽ в месяц, 181 200 ₽ в год — при 500 заказах и точности остатков 92 %

Два замечания к этой арифметике. Первое: доля в 2 % — не константа, а функция точности остатков; на складе с точностью 98 % она падает примерно до 0,5 %, и вся строка усыхает вчетверо. Второе: здесь не учтены потери на стороне канала — понижение карточки в выдаче маркетплейса после отмен по вине продавца и отток клиентов, который проявится месяцами позже. Считать их модельно нечестно, но помнить о них надо: они обычно больше прямых.

графикuchet-ostatkov-v-realnom-vremeni--02
Столбчатая диаграмма потерь 15 100 ₽ в месяц: разбор, отмены, повторные отгрузки

Столбчатая диаграмма из трёх столбцов с общим итогом сверху «15 100 ₽ в месяц, 181 200 ₽ в год». Столбцы: «Отменённые заказы, 4 × 2 000 ₽» — 8 000 ₽, самый высокий и выделенный; «Разбор с клиентом, 10 × 30 минут» — 3 500 ₽; «Повторные и частичные отгрузки, 6 × 600 ₽» — 3 600 ₽. Под графиком строка исходных данных: «500 заказов в месяц, средний заказ 8 000 ₽, маржа 25 %, точность остатков 92 %, обмен раз в час». Сбоку пунктирная отметка «при точности 98 % — примерно вчетверо ниже». Чертёжный стиль, подписи по-русски.

Больше половины потерь — прямая упущенная маржа по отменённым заказам

Как найти источник расхождения за один вечер

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

  1. 1Время проведения систематически позже времени факта на часы. Это первый разрыв: движения фиксируются задним числом. Признак — сдвиг регулярный и одинаковый по направлению, обычно «вечерние отгрузки проводятся утром». Чинится регламентом, денег не требует.
  2. 2Расхождение появляется и исчезает по расписанию. Остаток в канале расходится ровно между сеансами обмена и выравнивается после каждого. Признак — период расхождения совпадает с периодом обмена. Здесь и только здесь имеет смысл разговор о частоте.
  3. 3В движениях есть документ корректировки или изменение остатка без документа-основания. Это третий разрыв. Причина расхождения при этом уже не восстанавливается — правка стёрла след, — но виден масштаб проблемы: количество и сумма корректировок за месяц.

Если ни один из трёх сценариев не подошёл, а расхождение есть — остаётся четвёртый разрыв: товар в отборе. Проверяется он просто: сравнивается остаток по ячейке с остатком за вычетом открытых заданий. Если вторая цифра сходится с фактом, а первая нет, вопрос закрыт.

Отдельный случай — когда в выгрузке нет столбца «время факта», потому что система хранит только время проведения. Тогда его роль играют внешние отметки времени: время выпуска машины на пропускном журнале, время закрытия задания на терминале, время подписания УПД при приёмке. Сравнивать приходится вручную и по десятку операций, но одного вечера всё равно хватает — сдвиг, если он есть, виден сразу и он систематический, а не случайный.

разбор экранаuchet-ostatkov-v-realnom-vremeni--03
Абстрактный экран сверки движений за сутки с колонками времени факта и времени проведения

Абстрактный нарисованный экран выгрузки движений по одной позиции за сутки (не скриншот реального продукта). Таблица из пяти колонок: документ, операция, количество, «время факта», «время проведения». Шесть строк; в трёх строках время проведения отстаёт от времени факта на 12–15 часов, и эти ячейки подсвечены. Одна строка — «корректировка остатка» без документа-основания, помечена восклицательным знаком. Справа сбоку — три подписи-сценария: «сдвиг по времени», «период обмена», «ручная правка». Чертёжный стиль, подписи по-русски.

Два столбца времени рядом — и сценарий читается без всякой аналитики

Ручные правки: полный запрет и что вместо

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

Что это значитДокумент корректировки остатка

Отдельный документ, который меняет остаток и обязательно содержит четыре вещи: причину из закрытого списка (ошибка размещения, незафиксированное перемещение, ошибка кратности упаковки, подтверждённая недостача), ответственного, ссылку на пересчёт ячейки и дату. Свободный комментарий вместо закрытого списка не годится: такие причины не суммируются, а значит, по ним нельзя понять, что чинить.

Смотреть надо не на число корректировок, а на их долю

Корректировки не должны быть нулём — на живом складе они есть всегда, и обнулить их можно только запретом признавать ошибки. Нормальный ориентир — не более 1–2 % позиций в месяц, и при этом с равномерным распределением по причинам. Тревожный признак другой: половина корректировок приходится на одного человека или на одну причину. Это уже не учётный шум, а конкретная поломка в процессе, и лечится она там, где ломается, а не в системе. Регулярный источник таких строк отлично видно через циклический пересчёт с журналом причин.

Когда пятнадцати минут достаточно

Событийный обмен — когда каждое движение уходит в канал в момент проведения — стоит дороже пакетного не столько разработкой, сколько эксплуатацией: нужна очередь сообщений, обработка сбоев доставки, повторная отправка и мониторинг. Это плюс 80 000–150 000 ₽ к проекту интеграции и постоянное внимание к очереди. Отказаться от него можно в трёх случаях.

  • Один канал продаж и цикл заказа дольше часа. B2B-отгрузки по заявкам, снабжение производства, оптовые поставки по договору — обмен раз в 15 минут здесь неотличим от мгновенного, потому что решение всё равно принимается людьми и не за секунды.
  • Товар с большим запасом относительно суточных продаж. Если на позиции лежит месячный запас, задержка в четверть часа физически не может привести к продаже отсутствующего: остаток не успевает уйти в ноль за это время. Событийный обмен нужен только на позициях с оборачиваемостью в дни, и включать его разумно выборочно, а не на весь справочник.
  • Не закрыты первые три разрыва. Пока отгрузки проводятся задним числом, а остаток правят руками, учащение обмена ускоряет доставку неверной цифры — и ничего больше. Порядок починки всегда один: регламент фиксации, запрет ручных правок, резервирование при отборе и только потом частота. Тот же принцип «сначала дешёвое, потом дорогое» лежит в основе всей ступенчатой автоматизации склада.

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

Остаток в реальном времени — это не про скорость обмена. Это про то, что между действием на складе и записью в системе не проходит ни минуты и не участвует ни одна память человека.