Предыстория: Знать, где лежит товар — мало, нужно ещё вручную это указать
Клиент ведёт складской учёт в МойСклад и использует ячейки хранения — товары разложены по полкам и зонам с понятной маркировкой (A-01, A-02, B-01 и т.д.).
Проблема не в том, что товар сложно найти на складе. Проблема в документах. При создании каждой отгрузки менеджер должен был вручную указать, из какой именно ячейки забирать каждый товар. А если товара в одной ячейке не хватает — нужно разбить позицию на несколько строк, указать разные ячейки и разное количество в каждой.
Что это значит на практике: Отгрузка на 15 позиций — это 15 раз открыть остатки по ячейкам, проверить наличие, выбрать нужную ячейку, а где-то ещё и разбить строку на две-три. При потоке отгрузок это съедает время и неизбежно приводит к ошибкам: указал не ту ячейку, забыл разбить позицию, списал товар не оттуда.
Задача
- Автоматически назначать ячейки для каждой позиции отгрузки — без участия менеджера.
- Умно разбивать позиции, если товара в одной ячейке не хватает — забирать из нескольких ячеек по очереди.
- Не трогать то, что уже заполнено — если у позиции ячейка указана, скрипт её не меняет.
Решение: Скрипт, который сам раскладывает отгрузку по ячейкам
Мы разработали микросервис, который работает через API МойСклад и запускается автоматически при создании новой отгрузки.
Как работает
- Скрипт определяет склад и все позиции отгрузки.
- Проверяет каждую позицию — если ячейка уже назначена, пропускает.
- Для позиций без ячейки — ищет товар в ячейках склада и обходит их в алфавитном порядке (A → B → C).
- Если товара в первой ячейке достаточно — назначает её и переходит к следующему товару.
- Если не хватает — забирает всё что есть и переходит к следующей ячейке. Позиция автоматически разбивается на несколько строк, каждая со своей ячейкой и количеством.
Пример: нужно 10 шт. В ячейке «A-01» есть 4 шт., в «B-01» — 8 шт. Результат: позиция разбивается на две строки — 4 шт. из «A-01» и 6 шт. из «B-01».
Защита от ошибок: Если товара во всех ячейках суммарно не хватает — позиция пропускается без изменений. Скрипт не угадывает и не назначает лишнего.
Прозрачность: В комментарий к отгрузке записывается подробный лог — какой товар в какую ячейку назначен, где была разбивка, что пропущено. Плюс все действия дублируются в Google Таблицу.
Результат
- Ячейки назначаются сами: Менеджеру больше не нужно вручную проверять остатки и выбирать ячейки — скрипт делает это за секунды при создании отгрузки.
- Умная разбивка: Если товар хранится в нескольких ячейках — скрипт сам разобьёт позицию на нужное количество строк. Никакой ручной работы.
- Нет ошибок в списании: Товар списывается именно из тех ячеек, где он реально лежит — без путаницы и пересортицы.
- Полный контроль: Лог прямо в комментарии к отгрузке + Google Таблица для истории.
- Без подписок и скрытых платежей: Скрипт передан клиенту в полное владение. Оплата только за часы разработки.
Важно: В этом кейсе мы реализовали логику назначения ячеек по алфавитному порядку — это было удобно для конкретного клиента и его системы маркировки. Но алгоритм может быть любым: по приоритету зон, по принципу FIFO (первый пришёл — первый ушёл), по близости к зоне отгрузки или по любым другим правилам вашего склада. Мы подстраиваем логику под ваши процессы.