Точка заказа — это остаток, при снижении до которого система ставит позицию в заявку поставщику. Считается она как расход за срок поставки плюс страховой запас. Первое слагаемое почти все считают верно, второе — почти все занижают, потому что берут разброс продаж и игнорируют разброс срока поставки. На модельной позиции из этой статьи такая экономия внимания уменьшает страховой запас с 64 штук до 25 — в два с половиной раза.
Ошибка живучая, потому что не видна. Занижённый страховой запас не даёт дефицита каждый месяц — он даёт его в тех циклах, когда машина пришла на четыре дня позже обычного. Раз в квартал, на одной-двух позициях, и всегда с объяснением «поставщик подвёл». Формула при этом считается регулярно, отчёт «к заказу» формируется, автозаказ работает — просто он настроен на срок поставки, которого у вас не бывает.
Ниже — разбор формулы по слагаемым с арифметикой, которую можно повторить на калькуляторе; три типа товара, на которых формула даёт заведомо неверный ответ; список данных, без которых считать нечего; порядок перевода закупок на автопополнение и расчёт эффекта на 300 закупаемых позициях. Числа модельные — подставьте свои, арифметика не изменится.
Формула по слагаемым
В формуле два слагаемых, и они отвечают на разные вопросы. Первое — сколько товара уйдёт, пока едет заказ. Второе — сколько нужно сверх этого, чтобы пережить неудачное совпадение: расход оказался выше среднего, а машина пришла позже обычного. Складывать их надо всегда вместе; отдельно каждое бессмысленно.
Уровень остатка, при снижении до которого позиция попадает в заявку поставщику. Считается в штуках конкретной позиции — не в днях и не в рублях. Точка заказа отвечает только на вопрос «когда заказывать»; сколько заказывать — отдельное решение, его определяют минимальная партия, кратность упаковки и целевое покрытие.
Первое слагаемое — простое умножение: средний дневной расход на средний срок поставки в календарных днях. Срок считается от отправки заявки до момента, когда товар физически доступен к отбору, а не до отгрузки поставщиком и не до въезда машины на ворота. Пока поставка не принята и не размещена, продать её нельзя — и если приёмка у вас занимает сутки, эти сутки входят в срок поставки. Как этот момент фиксируется в системе, мы разбирали в статье про учёт остатков в реальном времени.
Второе слагаемое — страховой запас. Он покрывает две независимые случайности: колебание спроса и колебание срока поставки. Складываются они не сложением, а корнем из суммы квадратов. Страховой запас равен коэффициенту уровня сервиса, умноженному на квадратный корень из суммы двух вкладов: «средний срок поставки × квадрат разброса дневного расхода» и «квадрат среднего расхода × квадрат разброса срока поставки». Разброс здесь — стандартное отклонение, его считает любая таблица одной функцией.
Эти три дня и отделяют «машина пришла на два дня позже, никто не заметил» от «двое суток стояли без товара». Страховой запас вообще работает только в хвосте распределения: девятнадцать циклов из двадцати он лежит мёртвым грузом, и поэтому его так легко срезать «для оптимизации оборотных средств». Срезают обычно как раз то слагаемое, ради которого он и нужен.
Пилообразный график остатка по одной позиции за три цикла пополнения. Ось Y — штуки от 0 до 400, ось X — дни. Остаток убывает с наклоном 12 штук в день, при пересечении горизонтальной линии «точка заказа — 232 шт» ставится метка «заявка», через 14 дней остаток скачком растёт. Ниже проведена вторая горизонтальная линия «страховой запас — 64 шт», зона под ней заштрихована. Во втором цикле поставка приходит на 4 дня позже: линия остатка заходит в заштрихованную зону, но не касается нуля — эта точка подписана «страховой запас сработал». Пунктиром показан альтернативный уровень «без учёта разброса срока — 193 шт», при котором линия во втором цикле уходит в ноль. Чертёжный стиль, подписи по-русски.
Разброс срока поставки — слагаемое, которое выбрасывают
Разброс срока поставки — единственная величина в формуле, которой обычно нет в системе. Средний расход считается по движениям, стандартное отклонение расхода — тоже. А фактический срок поставки нигде не хранится: в заказе есть плановая дата, в приходном документе — фактическая, но их никто не сопоставляет, и в расчёт идут «14 дней по договору». Договорный срок — это обещание, а формуле нужна история.
Насколько это важно, видно на двух поставщиках с одинаковым средним сроком. Позиция та же: расход 12 штук в день, разброс расхода 4 штуки, уровень сервиса 95 %.
| Показатель | Поставщик A | Поставщик B |
|---|---|---|
| Средний срок поставки | 14 дней | 14 дней |
| Фактические сроки последних десяти поставок | от 13 до 15 дней | от 9 до 21 дня |
| Разброс срока (стандартное отклонение) | 1 день | 4 дня |
| Страховой запас по полной формуле | 31 шт | 82 шт |
| Страховой запас без учёта разброса срока | 25 шт | 25 шт |
| Заморожено в страховом запасе при себестоимости 800 ₽/шт | 24 800 ₽ | 65 600 ₽ |
Формула без разброса срока выдаёт для обоих поставщиков одинаковые 25 штук. Для A это почти правда — занижение на шесть штук. Для B она занижает запас втрое, и дефициты по этой позиции будут регулярными при том, что «нормы посчитаны и автозаказ работает». Средний срок у поставщиков одинаковый, поведение — противоположное; управлять надо разбросом, а не средним. Либо запасом, либо условиями договора: обязанность предупреждать о сдвиге отгрузки за трое суток стоит дешевле, чем 40 800 ₽ лишнего страхового запаса на одной позиции.
Практический шаг здесь дешевле любой формулы: заведите фиксацию фактического срока по каждой поставке — дата заявки и дата, когда товар стал доступен к отбору. Через десять-пятнадцать поставок по каждому контрагенту появится настоящий разброс, и половина споров о нормах закроется сама. То же поле пригодится, чтобы сравнивать поставщиков не только по цене в прайсе.
Уровень сервиса — это не сто процентов и стоит денег
Коэффициент в формуле задаёт, какую долю циклов вы соглашаетесь пережить без дефицита. Ста процентов не бывает: запас, покрывающий любое стечение обстоятельств, бесконечен. Выбор уровня сервиса — это решение о деньгах, и принимать его должен не логист в одиночку. Для той же позиции с корнем 39,0 разница выглядит так.
| Уровень сервиса | Коэффициент | Дефицит примерно раз в | Страховой запас | Заморожено при 800 ₽/шт |
|---|---|---|---|---|
| 90 % | 1,28 | 10 циклов | 50 шт | 40 000 ₽ |
| 95 % | 1,64 | 20 циклов | 64 шт | 51 200 ₽ |
| 97,5 % | 1,96 | 40 циклов | 76 шт | 60 800 ₽ |
| 99 % | 2,33 | 100 циклов | 91 шт | 72 800 ₽ |
По одной позиции переход с 95 % на 99 % стоит 27 штук и 21 600 ₽ замороженных денег. По сотне позиций группы A это уже 2 160 000 ₽ оборотных средств, которые больше нигде не работают. Разумная практика — разные уровни по группам: 97–99 % на позициях, которые тянут за собой остальной заказ клиента, 90–95 % на середине ассортимента и вообще никакого страхового запаса на хвосте, где уместнее пересмотреть ассортиментную матрицу.
Столбчатая диаграмма из четырёх столбцов. Ось X — уровень сервиса: 90 %, 95 %, 97,5 %, 99 %. Ось Y — страховой запас в штуках от 0 до 100. Высоты столбцов: 50, 64, 76, 91. Над каждым столбцом две подписи — количество штук и замороженная сумма при себестоимости 800 ₽/шт: 40 000 ₽, 51 200 ₽, 60 800 ₽, 72 800 ₽. Между вторым и четвёртым столбцом фигурная скобка с подписью «переход 95 % → 99 %: +27 шт, +21 600 ₽ на одной позиции». Чертёжный стиль, подписи по-русски.
Три ситуации, где формула даёт неверный ответ
Формула построена на допущении, что расход и срок колеблются вокруг устойчивого среднего. Есть три распространённых типа товара, где это допущение не выполняется, и применять к ним общий расчёт — значит получать регулярно неверный ответ при формально исправной методике.
- 1Сезонный товар
Средний расход за 12 месяцев не описывает ни один реальный месяц. У садового инвентаря май даёт в пять раз больше среднегодового, а ноябрь — в десять раз меньше. Расчёт по годовому среднему в мае гарантирует дефицит, а в ноябре — неликвид. Лечится не сменой формулы, а её входом: средний расход берётся по скользящему окну в 4–6 недель и умножается на сезонный коэффициент месяца, посчитанный по двум-трём прошлым годам. Позиций с выраженной сезонностью обычно 20–35 % ассортимента, и их надо помечать признаком в номенклатуре, а не вспоминать каждый год.
- 2Товар с редкими крупными заказами
Три месяца по нулю, потом отгрузка на 200 штук под контракт. Средний расход есть, разброс огромный, формула честно посчитает страховой запас размером почти с годовую потребность. Это не ошибка формулы — это сигнал, что позиция управляется не нормами, а обязательствами: её надо ставить под заказ и держать через резервы под конкретные сделки, а не через точку заказа. Признак такой позиции считается за минуту: если больше половины дней в периоде расход нулевой, точка заказа для неё не считается.
- 3Поставщик с плавающим сроком
Разброс в формуле берётся из истории и предполагает, что поставщик ведёт себя завтра примерно как вчера. Если срок не колеблется, а меняется скачком — сменил перевозчика, переехал склад, ввёл квоты, — история описывает уже несуществующее поведение. Здесь формула не врёт, она просто отвечает на устаревший вопрос. Рабочее правило: разброс пересчитывается по последним 10–12 поставкам, а не по всей истории, и при смене условий у контрагента норма пересчитывается принудительно, не дожидаясь планового квартала.
Какие данные нужны и каких обычно нет
Расчёт норм упирается не в математику, а в данные. Из шести обязательных наборов в типовой компании готовы два-три, и именно недостающие определяют срок проекта.
- История расхода со склада по позициям и датам — именно расхода, а не продаж по документам реализации. Минимум 6 месяцев для стабильных позиций и 24 месяца для сезонных, иначе сезонный коэффициент не из чего считать.
- Фактические сроки поставки по каждому поставщику — дата заявки и дата доступности к отбору, минимум 8–10 поставок на контрагента. Без них разброс срока приходится оценивать со слов закупщика, и он всегда оптимистичнее факта.
- Минимальная партия и кратность упаковки — иначе рассчитанная норма превращается в невыполнимую заявку «на 37 штук», а поставщик отгружает коробами по 24.
- Признак дефицита по дням — был товар на складе или нет. Без него история расхода занижена ровно в тех местах, где спрос был выше нормы.
- Календарь акций и распродаж — всплеск расхода в акционную неделю не должен становиться нормой на следующий квартал.
- Справочник замен и аналогов — при уходе позиции спрос перетекает на соседнюю, и без связи это выглядит как падение у одной и рост у другой.
Если позиции не было на складе девять дней из тридцати, продажи за месяц покажут 40 штук вместо 57. Норма, посчитанная по 40, снова приведёт к дефициту, и следующий месяц снова даст 40. Занижение самоподдерживающееся, и никакая формула из него не выберется: данные надо чинить на входе, восстанавливая расход по дням фактического наличия.
Порядок перевода закупок на автопополнение
Переход делается не разом по всей номенклатуре. Смысл этапов в том, чтобы к моменту, когда система начнёт формировать заявки, у закупщика уже была причина ей доверять — на его собственных позициях и его собственных цифрах.
- 1Расчёт норм на исторических данных, 2–3 недели
Собирается история расхода, восстанавливается признак дефицита, из приходных документов вытаскиваются фактические сроки поставок. Считаются нормы по всем позициям, ассортимент делится на группы по уровню сервиса. Результат этапа — таблица норм, которую можно открыть и оспорить построчно.
- 2Пилот на 30–50 позициях, 4–6 недель
Берутся позиции группы A с устойчивым спросом — те, где ошибка заметна быстрее всего. Система формирует заявку, закупщик её видит и правит. Ключевое: правки фиксируются с причиной, а не просто вносятся. Через полтора месяца видно, какие поправки повторяются — это и есть недостающие правила.
- 3Контроль два месяца, вся номенклатура в режиме подсказки
Нормы считаются по всем позициям, но заявка по-прежнему уходит по решению человека. Ведётся журнал из трёх колонок: что предложила система, что сделал закупщик, что вышло по факту. Если доля ручных правок за два месяца не опустилась ниже 15–20 %, переводить в постоянный режим рано — сначала разбираются причины правок.
- 4Постоянный режим и пересчёт по расписанию
Заявка формируется автоматически, человек согласовывает исключения. Нормы пересчитываются раз в квартал и принудительно — при смене условий у поставщика, вводе новой позиции и после каждого сезона. Пересчёт занимает 4–6 часов работы инженера по 3 000 ₽ в час, то есть 4 000–6 000 ₽ в месяц в пересчёте на календарь.
Человеку остаётся ровно три вещи, и ни одну из них отдавать системе не надо: согласование крупной закупки выше установленного порога в рублях, ввод новых позиций, у которых истории нет по определению, и реакция на новость о срыве поставки — звонок поставщика формула не читает. Всё остальное — механическая работа, которая делается по правилам и потому автоматизируется.
Что это даёт в деньгах: расчёт на 300 закупаемых позициях
Модельная компания — оптово-розничная торговля: 800 активных позиций, из них 300 закупаются регулярно, закупка 4 500 000 ₽ в месяц по себестоимости, наценка 25 % к себестоимости, средний запас по закупаемым позициям 6 300 000 ₽. Стоимость денег принимаем 24 % годовых, то есть 2 % в месяц. Эффект складывается из трёх источников, и все три считаются на данных, которые у компании уже есть.
Вложение в проект такого объёма — около 240 000 ₽: сбор и чистка истории расхода с восстановлением признака дефицита, расчёт норм по 300 позициям и группировка по уровням сервиса, настройка автозаказа и отчёта «к заказу сегодня» в учётной системе, сопровождение двух месяцев контроля. Без поддержки окупаемость получается чуть больше семи месяцев; с поддержкой 8 000 ₽ в месяц чистый возврат — 24 400 ₽, а окупаемость — около десяти месяцев. Вторая цифра честнее, потому что нормы без пересчёта устаревают за два-три квартала.
Отдельно стоит сказать то, о чём в презентациях молчат: времени закупщика формула не экономит. Те же 6 часов в неделю он тратит не на просмотр трёхсот позиций, а на разбор двадцати исключений — крупных закупок, новых позиций и сорванных сроков. Это и есть смысл автопополнения: не убрать человека, а перевести его с механической работы на решения, которые формула принимать не умеет. Смежная задача — планирование закупок с учётом платёжного календаря — решается отдельно и на тех же данных.
Когда автопополнение не работает
Есть четыре ситуации, в которых проект нормирования лучше не начинать — не потому, что методика плоха, а потому, что на этих вводных она не даст ответа лучше, чем закупщик с опытом.
- Непредсказуемый спрос без истории. Новый ассортимент, проектные поставки под разовые контракты, товар, у которого больше половины дней расход нулевой. Формула на таких данных выдаёт либо огромный страховой запас, либо ноль, и оба ответа бесполезны. Здесь работают правило минимального запаса и закупка под подтверждённый заказ.
- Поставщик, который срывает сроки без предупреждения. Разброс, посчитанный по истории, описывает колебания, а не провалы. Задержка на три недели в распределение не укладывается, и покрыть её страховым запасом — значит заморозить месячную потребность. Дешевле второй поставщик на позицию, чем норма, рассчитанная под худший случай.
- Меньше 80–100 регулярно закупаемых позиций. Ниже этого порога закупщик держит нормы в голове точнее любой формулы, потому что помнит контекст по каждой позиции. Проект на 240 000 ₽ здесь заменяется таблицей с минимальными остатками и получасом внимания в неделю.
- Учёт, в котором остаток не совпадает с фактом. Нормы считаются от остатка. Если остаток в системе отличается от полки на 5–10 %, точная формула поверх неточных данных даёт точно неверный ответ. Сначала — приёмка, адреса и пересчёт, потом нормы.
И последнее. Формула точки заказа — не модель спроса и не прогноз. Она отвечает на один узкий вопрос: сколько держать, чтобы пережить срок поставки. Всё, что связано с сезонными пиками, трендом и планированием закупки на квартал вперёд, — задача другого класса и другой цены; мы разбираем её отдельно, и там честный ответ начинается с того, какая точность в принципе достижима на вашем ассортименте.
Норма запаса — это не число в справочнике, а решение о том, сколько денег вы согласны держать на полке ради того, чтобы не сказать клиенту «нет».
