Я сделал строймагазину отчёт по складу в штуках, и собственник не нашёл в нём денег
Собственник строймагазина дал мне выгрузки из 1С за несколько лет, разбитые по месяцам. В этих выгрузках есть только количества: приход, расход, остаток. Нет ни закупочной цены, ни розничной. Поэтому первый отчёт я мог сортировать только по штукам, не по деньгам, и он не отвечал на вопрос, где сколько денег. Через месяц бот присылал в рабочую группу другое. Заморожено в неликвиде 25,8 млн ₽ на 7433 позиции, перезатар, то есть лишнее, ещё 29,9 млн ₽ на 9426 позиций.

Первый отчёт мимо
Весной я написал собственнику, что хочу что-то автоматизировать в магазине и пока не знаю что. Я уже написал скрипт для управления ставками в Яндексе, ребята им пользуются. Но я могу предложить, только когда услышу.
На созвоне задачу поставили одной фразой: оптимизировать остатки, где можно опустить, а где поднять. По этому заданию отчёт был сделан один в один. ИИ предложил обычный ABC-анализ в штуках, и утром собственник ответил:
Я думал он выделит сам товары и объяснит в каком количестве он считает их нужно хранить
Регистрируйся на Pressfeed – получи 3 питча в подарок
Промокод покажем сразу после регистрации.
Я ответил, что это говорит о том, что тут надо сесть и заниматься этим, уточнять, работать с этим. Получить ссылку из 1С, менять, взять человека, который будет сразу проверять. Оно не выдаст результат, который он нарисовал в своей голове. Оно 100% может сделать, но надо сесть и заниматься, а не как вчера: вот отчёт, хочу, чтобы оно полетело.
Через пятнадцать минут я написал, чего у меня не хватает:
В ваших выгрузках есть только количества: приход, расход, остаток. Нет ни закупочной цены, ни розничной. Поэтому я могу сортировать только по штукам, не по деньгам.
Чего не было в выгрузке
Поэтому отчёт и не отвечает на вопрос, где сколько денег.
Я написал, что нужно от магазина, чтобы заговорить на языке собственника. Одна выгрузка прайса из 1С: на каждый код 1С две цены, закупочная и розничная. Можно одной таблицей, можно двумя, формат любой, Excel или CSV. Это типовой отчёт 1С «Цены номенклатуры» или прайс-лист по виду цен.
И что я тогда сделаю: полностью переделаю план в деньгах, четыре списка.

Заморожено в неликвиде: на складе лежит на N млн руб мёртвого стока. Если распродать с дисконтом 50%, магазин вернёт M млн в кассу. То есть не 120 позиций мёртвого стока, а 30, которые дают основные деньги.
Упущенная выручка: из-за нулевых остатков магазин теряет K млн руб в месяц. Топ-20 позиций по убыткам, и если докупить, окупится за X дней.
Перекредитованы у поставщиков: на N млн закупили лишнего. Если согласовать снижение заказов, можно высвободить эти деньги в течение 3-6 месяцев.
Самые денежные SKU: топ-50 позиций по обороту в рублях. С ними нельзя ошибаться, потеря одного дня продаж это большая дыра.
Сверху дашборд-табличка на одной странице, которую собственник показывает директору. Я обещал, что на это уйдёт ровно один день после того, как пришлют прайс. Закончил я так:
Это и есть язык собственника.
Чего не хватало в первом отчёте и что я предложил добавить
Через полчаса в то же утро я отправил большой список, что ещё можно автоматизировать. Поставщики, там сейчас самая дыра. Автогенератор заказа поставщику, минус 30-40 минут на каждый заказ. Журнал заказов и надёжности поставщиков: через 2-3 месяца появляется аналитика, у кого срыв сроков, у кого недопоставка, у кого брак. Парсер цен конкурентов. Для мёртвого стока автоматическая прогрессивная скидка: 10% после 6 мес простоя, 20% после 9, 40% после 12, 60% после 18. Сегментация B2B-клиентов в CRM.
Для человека, который только что получил отчёт мимо задачи, это была простыня на два экрана.
Что бы я делал первым: утренний Telegram-бот, самое прямое снятие нагрузки. Когда работает, собственник открывает остальное по необходимости, а не каждое утро в Excel.
Отдельно я выписал собственнику, что сильно зависит от его действий. Подгрузка прайса открывает динамические скидки, маржу, what-if в рублях. Доступ к данным заказов от поставщиков открывает аналитику надёжности. 1С через OData открывает живые остатки, а не дневные.
Таблица зависимостей: без действий магазина ни один пункт не запускался
Из всего списка в работу пошёл только бот.
Доступ, через который ничего не сломать
В любом случае нужна ссылка из 1С. В 1С 8.3 есть встроенный REST-интерфейс OData, после этого можно из любого скрипта дёрнуть URL и получить JSON со свежими остатками.
ТЗ для программиста 1С я начал так:
Нужен read-only доступ к 1С через OData для внешней аналитики (остатки, продажи, цены).
Прошу настроить так, чтобы даже при компрометации логина и пароля невозможно было ни менять, ни удалять данные. Создать отдельную роль, не использовать существующие. В правах поставить только «Чтение» и «Просмотр», никаких «Добавление», «Изменение», «Удаление», «Проведение». Открыть через OData только нужные объекты: номенклатуру, цены, остатки на складах и продажи.
Всё остальное не публиковать. Контрагенты, документы оплат, договоры, пользователи закрыты. Веб-сервер обязательно через HTTPS с валидным сертификатом, Basic Auth по HTTP светит пароль в открытом виде, это критично. Ограничение по IP, если возможно. И лог запросов: если будет что-то подозрительное, увидим в логах.
ТЗ ушло программисту в тот же день, он только вернулся из отпуска. Я уже понял, что всех надо торопить, а то всё стоит на месте. Нам там желательно быстрее, мы в начале пути сели. Доступ появился через три недели.
Условия доступа, при которых утечка пароля не даёт ничего изменить в базе
Пункт «Опубликовать через OData» на каждом объекте программист в конфигураторе не нашёл.
Тот же склад, но в рублях
Доступ дали. Я ещё, чтобы даже в таком виде отдать, весь день потратил. Утром собственнику понравилось. Я ответил, что надо всё по очереди, он же машина. Можно ещё точнее сделать, если надо, только уточнить что.
В тот же день бот прислал первую сводку, склад на утро. Срочно 63 позиции на 274 934 ₽, закончатся раньше поставки. Всего к дозаказу 304 позиции на 1 551 047 ₽. Заморожено в неликвиде 25,8 млн ₽ на 7433 позиции. Перезатар, лишнее, 29,9 млн ₽ на 9426 позиций.
Вместе 55,7 млн ₽, примерно в 36 раз больше суммы к дозаказу.
Две нижние строки сводки против суммы, которую надо докупить
Я написал собственнику, что в 8 утра бот в группу будет слать каждый день обновления. Я пока не знал, как ещё доработать, может, пока что этого для старта хватит. И попросил его самого потыкать отчёты, может, что-то захочет по-другому.
Одна дыра осталась, ему надо точнее читать, что в пути, то есть что заказано и едет. Чтобы включить в пути, надо дать роли external_readonly право на чтение заказов поставщикам. Это уже зашито в скрипт, правок не потребуется.
Назавтра собственник прислал описание ABC/XYZ-анализа и попросил, чтобы ИИ обработал номенклатуру и присвоил группу. Хороший запрос по матрице деления, это какой пул товаров делает какую выручку.
Классические 10/25% дают X=0, Y=14, Z=25010. Для такого ассортимента эта шкала не работает. 7607 товаров продаются лишь 1 месяц в году, разовые или проектные, и только около 2968 почти каждый месяц.
Дальше я связал ABC/XYZ с дозаказом, чтобы AZ-товары автоматически получали повышенный страховой запас в боте. Сумма к дозаказу выросла примерно на 0,46 млн за счёт того, что ценные и нестабильные группы получили повышенный страховой запас: AZ ×1,6, AY ×1,3, BZ ×1,4, BY ×1,2. Стабильные X и длинный хвост C остались ×1,0. Светофор, заказать и суммы пересчитаны с учётом коэффициента группы, Excel со всеми 22 976 товарами у собственника в папке.
Чего я до сих пор не знаю
Распродавали неликвид или нет, сколько ушло и почём, в переписке нет. Поменялись ли закупки после того, как бот стал каждое утро присылать сумму к дозаказу, я тоже не видел.
Выводы
Для ИИ лучше тезисно всё написать: чтобы загнать в ИИ, надо всё перевести, продумать план, потом реализацию.
Я Александр Сосновский, 19 лет в маркетинге. Работаю как внешний руководитель маркетинга и часто дохожу от рекламы до склада.
А вы знаете, сколько у вас сейчас денег стоит на складе в товаре, который не продаётся?








Комментарии