Статья написана на основе интервью с Алексеем Воротягиным, IT-директором компании «ИталТрак».
Однажды нам пришлось искать запчасти для двух сломавшихся грузовиков IVECO сразу на нескольких континентах. Одну нашли в Австралии, другую в Латинской Америке, ещё две — в США, четыре — в Италии. Везли срочно, в том числе чартерными рейсами: сначала до Москвы, потом до Красноярска. Сама «железка» могла стоить около €1000, её доставка — €12 000. И это всё равно имело смысл.
Грузовики работали на золотом прииске. Всего машин было шесть, две вышли из строя, а то время, когда техника простаивала, обходился клиенту намного дороже стоимости запчастей и их доставки. В таких ситуациях вообще перестаёшь смотреть на цену «железки» отдельно: если машина должна работать прямо сейчас, важнее становится то, сколько бизнес потеряет за каждый час или день простоя.
Мы в «ИталТраке» занимаемся запчастями для импортных грузовиков и сельскохозяйственной техники, поэтому такие истории для нас не что-то совсем из ряда вон выходящее. Конечно, чартер через океан нужен далеко не для каждой поставки, но срочные заказы — важная часть нашего бизнеса. Иногда настолько срочные, что, когда нужная деталь приезжает на склад, сотрудники откладывают остальные операции и занимаются только ею.
А на складе у нас при этом ассортимент более двух миллионов товарных позиций.
У нас два миллиона позиций. Узнать нужную деталь в лицо невозможно
С таким ассортиментом невозможно рассчитывать на кладовщика, который посмотрит на железку и скажет: «А, знаю, это такой-то артикул». Нет специалиста, способного взять любую деталь из нашего ассортимента и по внешнему виду точно определить её номер. Запчасти отличаются модификациями, размерами, применяемостью, а справочники номенклатуры у нас исчисляются миллионами позиций.
Поэтому на складе мы пришли к тому, что я называю «100% доверием терминалу». Если ТСД говорит сотруднику идти в определённую ячейку за определённой деталью, он идёт туда и сканирует код. Запомнить расположение такого количества товаров или узнавать их в лицо просто невозможно.
При этом два миллиона позиций — это далеко не два миллиона одинаковых коробок. У нас есть шины, аккумуляторы, двигатели, клапаны, подшипники, сальники и огромное количество других деталей. Крупногабаритный товар размещаем там, где с ним можно работать с помощью техники, мелкий собираем вручную, ходовые позиции стараемся держать ближе, редко востребованные — дальше.
А некоторые запчасти приходится ещё и обслуживать, пока они просто лежат и ждут покупателя. Металл нужно защищать от коррозии, резиновые элементы — от пересыхания. Например, клапаны обрабатываются маслом и заворачиваются в плёнку, подшипники хранятся в промасленной парафинированной бумаге. В зависимости от материала консервацию приходится повторять примерно раз в три-шесть месяцев.
Получается, нам недостаточно знать, что деталь есть на складе и лежит в конкретной ячейке. Иногда нужно ещё помнить, когда к ней пора вернуться и снова провести обслуживание.
80% запчастей ещё не приехали на склад, а мы уже знаем, кому они достанутся
У нашего склада есть ещё одна особенность: около 80% поступающих деталей заранее зарезервированы под конкретного клиента. Мы ещё до приезда товара понимаем, кому предназначена запчасть и куда она должна отправиться дальше.
Поэтому склад часто работает не как место, где товар приехал и надолго поселился на полке, а как промежуточная точка. Деталь принимаем, определяем клиента, собираем с другими его позициями и отправляем дальше. У нас это называется сквозной отгрузкой.
А для мегасрочных поставок раньше вообще существовал отдельный приоритет. Если приезжала деталь, которую где-то уже ждёт вставшая техника, сотрудники знали: сейчас всё остальное откладываем и занимаемся этим грузом. Когда запчасть уже прилетела из Латинской Америки через океан, а дальше её нужно успеть отправить в Красноярск, потерять несколько часов на складе — очень дорогая ошибка.
У нас бывали логистические цепочки, рассчитанные практически по времени: машина приезжает, груз нужно обработать, дальше он едет во Внуково, а самолёт вылетает через два часа. И в этот момент вся сложная международная логистика внезапно упирается в очень простой вопрос: где сейчас лежит нужная коробка и точно ли мы понимаем, кому она должна уехать?
В какой-то момент по складу одновременно бегали кладовщики с бумажками и айтишники
Мы довольно быстро росли, поэтому красивой истории в духе «сначала тщательно спроектировали процессы, потом выбрали систему и спокойно её внедрили» у нас не было. Склад уже работал, объёмы увеличивались, машины приезжали каждый день, а автоматизировать всё это приходилось параллельно.
В какой-то момент доходило буквально до того, что по складу бегали сотрудники с бумажками, а рядом бегали айтишники и пытались что-нибудь запустить. Остановить работу на несколько месяцев, спокойно всё настроить и потом включить новый склад мы, конечно, не могли. Клиенту не объяснишь, что его запчасть пока нельзя принять, потому что у нас IT-проект.
Своя разработка у нас при этом была. У нас есть 1С-разработчики, внутренний IT и достаточно много компетенций, чтобы делать собственные решения. Но компания росла не только на складе: развивались продажи, закупки, работа с ценами, конкурентами. Забрать всех разработчиков и посадить их на несколько месяцев исключительно на мобильную автоматизацию означало остановить другие проекты.
Поэтому мы одновременно пробовали готовые решения и что-то делали сами. Причём времени на долгие конкурсы и сравнительные таблицы особенно не было. Логика была довольно прагматичная: берём вариант, пробуем запустить. Не работает — идём дальше.
Сначала нашли другое готовое решение, которое показалось проще во внедрении. Но оно не смогло нормально работать со сканирующей головкой терминалов, которые мы уже купили. Началась переписка с разработчиками, попытки разобраться, время шло, а склад продолжал работать. Я решил не ждать и начал искать следующий вариант.
Так мы пришли к Клеверенсу. А после того, как выстроили полноценный учётный контур, даже поучаствовали в съёмках подкаста.
Сначала мы решили, что часть процессов проще написать самим. А потом начали «городить огород»
Когда у компании есть собственные разработчики, вопрос возникает совершенно логичный: зачем вообще брать готовую платформу? Можно же написать приложение точно под свои процессы и ни от кого не зависеть.
На небольшом количестве операций эта идея действительно выглядит разумно. Допустим, нам нужно, чтобы сотрудник взял товар, отсканировал и положил в определённую ячейку. Такой сценарий можно довольно быстро сделать самостоятельно.
Проблемы начинаются, когда таких сценариев становится десять. Обычную приёмку нужно раскладывать по складу одним способом, товар под конкретных клиентов — другим. Для мегасрочных деталей нужен отдельный приоритет. Появляются свои исключения, дополнительные данные, нестандартные документы. И каждая следующая доработка начинает цепляться за предыдущую.
Мы тоже в какой-то момент начали «городить огород». Например, нам понадобилось разделить обычную приёмку и запчасти, которые сразу распределяются по клиентам. И мы стали придумывать под это собственную механику, что-то дорабатывать, накручивать. А потом выяснилось, что похожий результат можно получить гораздо проще, используя уже существующий бизнес-процесс.
Для меня это стало одним из аргументов в пользу готовой платформы. Внешний специалист нужен не только затем, чтобы написать по твоему техническому заданию ещё несколько строк кода. Иногда гораздо полезнее, когда ты описываешь ему бизнес-задачу, а он говорит: «Стоп. Вам вообще не нужно делать то, что вы придумали. Вот этот же результат можно получить проще».
Поэтому самый удобный кусок собственной разработки — иногда тот, который тебе не пришлось разрабатывать.
На документах в 8000 строк некоторые программы просто «превращались в тыкву»
Масштаб был отдельной проблемой. На тестовом примере многие системы работают прекрасно. А потом на склад приезжает реальная поставка и появляется документ на 8000 строк.
Нам нужна была возможность нормально работать с таким документом онлайн. Нельзя сказать машине: «Подождите, мы сначала разобьём вашу поставку на удобные для программы части». Коробки выгружаются в том порядке, в котором физически лежат в кузове. Первая может относиться к строке где-нибудь в конце документа, следующая — к его началу.
Мы сталкивались с решениями, которые на таких объёмах, как я обычно говорю, просто «превращались в тыкву». Пока данных немного, всё выглядит отлично. Когда справочник измеряется миллионами позиций, а один документ — тысячами строк, требования к системе становятся совсем другими.
Со стороны складская автоматизация при этом выглядит довольно скучно: сотрудник взял ТСД, отсканировал штрихкод, что-то появилось на экране. Но за одним этим «пиком» у нас может стоять поиск нужной позиции среди миллионов товаров и огромный документ, который должен обработаться достаточно быстро, чтобы человек не стоял посреди разгрузки и не ждал программу.
Мы могли отправить исправную запчасть в металлолом просто потому, что потерялась этикетка
При миллионном ассортименте есть ещё одна проблема: мы не всегда можем восстановить информацию о детали по самой детали. Если бумажная этикетка порвалась или потерялась, а точный артикул определить невозможно, перед нами может лежать совершенно исправная запчасть, которую мы больше не способны нормально идентифицировать.
Раньше такого товара за год могло набираться около полутонны. И речь не о сломанных или ржавых запчастях — они могли быть абсолютно нормальными. Просто мы уже не могли с достаточной уверенностью сказать, что именно перед нами, а значит, товар приходилось списывать и отправлять в металлолом.
Поэтому вполне резонно появилась необходимость перепечатать повреждённую этикетку, пока старый штрихкод ещё можно считать. Так мы точно знаем, с какой позицией работаем. Кажется мелочью на фоне самолётов, миллионов строк и огромных площадей хранения, но на реальном складе именно из таких мелочей в итоге складываются деньги.
Похожим образом мы изменили и инвентаризацию. Вместо того чтобы ждать одного большого пересчёта, можно постепенно проверять отдельные полки и ярусы между основными операциями. В тот же процесс удобно включать обслуживание товара: проверить давно лежащие детали, провести консервацию, заменить повреждённую этикетку. Тогда склад не приходится в какой-то момент останавливать целиком ради попытки разом пересчитать миллионы позиций.
Мы добавили ещё 1000 м² склада и приготовились нанимать людей, но они не понадобились
Рост склада обычно довольно легко превращается в рост штата. Стеллажей стало больше — значит, нужны новые кладовщики. Но при нашем ассортименте проблема даже не столько в количестве квадратных метров, сколько в том, сколько времени человек тратит на перемещения и поиск.
Мы недавно считали, что на тысячу квадратных метров при нескольких миллионах позиций без нормально настроенных процессов нам понадобилось бы порядка 17–18 человек. Если дать сотруднику заказ на 20–30 разных деталей и заставить самостоятельно искать их среди такого ассортимента, он может ходить по складу несколько часов. А заказов у нас не один и не десять — их сотни.
Потом мы добавили ещё примерно тысячу квадратных метров, построили большие стеллажи и пришли к сотрудникам с вполне логичным вопросом: людей «докупать» будем? Они ответили, что пока справляются сами.
Вообще за время развития склада объёмы выросли примерно в десять раз. Когда-то постоянно хранящегося товара было примерно на 60–70 млн рублей, позже — уже на 500–600 млн. При этом увеличивать штат пропорционально объёмам не пришлось.
Приёмка и отгрузка в итоге ускорились примерно в десять раз, инвентаризация — в пять. Операция, которая раньше могла занимать около пяти минут из-за поиска информации в 1С и Excel, теперь занимает примерно минуту.
Но после нескольких лет работы мне кажется, что лучше всего масштаб этой истории показывает вообще не эта статистика.
Где-то на золотом прииске ломается грузовик. Мы ищем нужную железку на другом конце света, ради неё заказывают чартер, самолёт пересекает океан, груз перехватывают в Москве и отправляют дальше. Клиент готов заплатить за доставку в несколько раз больше стоимости самой запчасти, потому что простой техники стоит ещё дороже.
А потом вся эта дорогая логистическая цепочка приезжает на наш склад.
И наша задача — среди миллионов других «железок» просто не потерять одну нужную.