МойСклад → n8n: alert по остаткам, резервам и точке заказа ¶
Обновлено: 2026-05-30
Импортируйте workflow, замените credentials и прогоните тестовый payload до включения production.
- Проблема: почему остатки заканчиваются раньше отчёта
- Архитектура workflow для stock alert МойСклад
- Контракт данных товара и склада
- Code Node: расчет available stock и reorder alert
- Готовый workflow JSON: скачать и импортировать
- Пошаговая настройка МойСклад, n8n и Telegram
- Тесты остатков, резервов и повторных алертов
- Production-риски складской автоматизации
- Полезные ссылки и документация
- Критерии готовности
Проблема: остатки в МойСклад могут выглядеть нормальными, но доступный запас уже ниже точки заказа из-за резервов, продаж и задержек поставщика. Отчёт раз в неделю обнаруживает проблему слишком поздно.
Решение: настроить workflow МойСклад → n8n: регулярно получать остатки, считать доступное количество, сравнивать с reorder point и отправлять точный alert закупкам.
Проблема: почему остатки заканчиваются раньше отчёта ¶
В МойСклад товар может числиться на остатке, но быть уже зарезервированным под заказ. Если смотреть только на stock, закупки узнают о дефиците поздно: клиент уже оформил заказ, менеджер обещал отгрузку, а свободного количества нет. Поэтому alert по остаткам должен учитывать резервы, склад, минимальный запас и точку заказа.
Workflow n8n для МойСклад полезен, когда нужно не просто выгрузить отчёт, а создать регулярную автоматизацию закупок: проверить остатки, отфильтровать критичные позиции, отправить Telegram/CRM задачу и не повторять один и тот же alert каждый час.
Архитектура workflow для stock alert МойСклад ¶
| Нода | Роль | Что проверить |
|---|---|---|
| Schedule daily | Запускает проверку | Время до закупочного окна |
| Fetch stock | Получает остатки МойСклад | Склад, модификации, лимиты API |
| Calculate reorder | Считает доступный остаток | stock - reserve + in_transit |
| Filter alerts | Оставляет только дефицит | reorder_point, supplier, min_order_qty |
| Notify procurement | Отправляет alert | Telegram, CRM task или email |
Контракт данных товара и склада ¶
Для каждого товара лучше иметь стабильный product_id, артикул, склад и точку заказа. Значения можно брать из МойСклад, Google Sheets или отдельной таблицы закупок.
{
"product_id": "c8e6a2f1-11a0-4e41-91b4-63e0e6a91f70",
"name": "Картридж фильтра A-10",
"sku": "FILTER-A10",
"warehouse": "Основной склад",
"stock": 12,
"reserve": 5,
"in_transit": 0,
"reorder_point": 10,
"min_order_qty": 20,
"supplier": "ООО Поставщик"
}
Code Node: расчет available stock и reorder alert ¶
Code Node ниже не делает заказ автоматически. Он рассчитывает сигнал для человека или отдельного согласованного workflow закупки.
const item = $json;
const stock = Number(item.stock ?? 0);
const reserve = Number(item.reserve ?? 0);
const inTransit = Number(item.in_transit ?? 0);
const reorderPoint = Number(item.reorder_point ?? item.min_stock ?? 0);
const available = stock - reserve + inTransit;
const needOrder = available <= reorderPoint;
const qtyToOrder = needOrder ? Math.max(Number(item.min_order_qty ?? 1), reorderPoint * 2 - available) : 0;
return [{ json: {
product_id: item.product_id,
sku: item.sku,
name: item.name,
warehouse: item.warehouse ?? 'default',
stock,
reserve,
in_transit: inTransit,
available,
reorder_point: reorderPoint,
alert: needOrder,
qty_to_order: qtyToOrder,
dedupe_key: `moysklad:${item.product_id}:${item.warehouse ?? 'default'}:${reorderPoint}`,
message: needOrder
? `⚠️ ${item.sku}: доступно ${available}, точка заказа ${reorderPoint}, заказать ${qtyToOrder}`
: `✅ ${item.sku}: запас в норме, доступно ${available}`
}}];Почему нельзя смотреть только на stock
Остаток на складе может быть зарезервирован под заказы. Для закупок важнее доступное количество: фактический остаток минус резерв плюс ожидаемый приход.
Готовый workflow JSON: скачать и импортировать ¶
В архиве страницы есть workflow JSON и payload. После импорта замените credential МойСклад, параметры склада, таблицу reorder points и канал уведомлений.
{
"name": "Nodbot - MoySklad stock alert with reorder point",
"nodes": [
{ "name": "Schedule daily", "type": "n8n-nodes-base.scheduleTrigger", "purpose": "Запускать проверку остатков" },
{ "name": "Fetch stock from MoySklad", "type": "n8n-nodes-base.httpRequest", "purpose": "Получить остатки, резервы и склады" },
{ "name": "Calculate reorder Code", "type": "n8n-nodes-base.code", "purpose": "Посчитать available stock и qty_to_order" },
{ "name": "Filter alerts", "type": "n8n-nodes-base.if", "purpose": "Отправить только товары ниже точки заказа" },
{ "name": "Send Telegram/CRM alert", "type": "n8n-nodes-base.telegram", "purpose": "Уведомить закупки или создать задачу" }
],
"connections": "Schedule → Fetch stock → Calculate → IF alert → Telegram/CRM"
}
Пошаговая настройка МойСклад, n8n и Telegram ¶
- Определите список складов и товаров, которые участвуют в контроле остатков.
- Задайте
reorder_pointиmin_order_qtyдля каждой SKU. - Настройте HTTP Request к API МойСклад и проверьте пагинацию.
- Добавьте расчет available stock и фильтр по alert=true.
- Отправляйте результат в Telegram, Битрикс24 задачу или таблицу закупок.
Тесты остатков, резервов и повторных алертов ¶
curl -X POST "https://YOUR-N8N-DOMAIN/webhook/moysklad-stock-alert" -H "Content-Type: application/json" --data @moysklad-stock-alert-payload.json- Товар ниже точки заказа должен попасть в alert.
- Товар с большим резервом должен считаться дефицитным, даже если stock высокий.
- Позиция в пути должна уменьшать срочность, если это согласовано с закупками.
- Повторный запуск не должен спамить один и тот же alert без изменения статуса.
- Ошибка API МойСклад должна уходить в Error Workflow.
Production-риски складской автоматизации ¶
- Не учитываются резервы. Команда закупок видит “12 на складе”, хотя доступно только 7.
- Одна точка заказа для всех SKU. Быстроходные товары заканчиваются раньше, чем срабатывает alert.
- Нет дедупликации. Telegram получает один и тот же список дефицита каждый час.
- Пагинация API пропущена. Проверяется только первая страница товаров.
- Автозаказ без подтверждения. Для закупок лучше начинать с human approval.
Полезные ссылки и документация ¶
Смотрите также: Error Workflow с Telegram-алертом, Retry и DLQ для API, Idempotency в Postgres. Официальная документация: МойСклад JSON API, n8n HTTP Request node, Telegram Bot API.
Критерии готовности ¶
- Alert строится по доступному остатку, а не только по stock.
- У каждой SKU есть точка заказа и минимальная партия.
- Workflow учитывает склад, резерв и товары в пути.
- Повторные уведомления дедуплицируются или группируются.
- Ошибки API, лимиты и пустые ответы попадают в мониторинг.
Nodbot настроит МойСклад, n8n, reorder alerts, Telegram/CRM задачи и human approval для закупок без хаоса.
Настроить stock alert