Содержание

Складской учёт начинается с трёх вещей: пересчитать товар, записать начальные остатки и фиксировать каждое поступление и выбытие. Если часть товара уже обещана покупателю, её нужно отделить от свободного количества. Иначе сотрудник видит двадцать коробок и продаёт их, хотя восемь уже отложены под другой заказ.
Ниже — порядок для небольшой мастерской или магазина с одним складом. На вымышленном товаре разберём приход, резерв и отгрузку, затем дадим задание для учебного приложения. Это пример количественного учёта: себестоимость, налоги, кассу и маркировку здесь не рассчитываем.
Сначала определите, что именно считаете
Выберите один участок: например, коробки для упаковки готовых заказов. У каждой позиции должны быть постоянный артикул, понятное название и единица измерения. «Коробка Демо-А» в штуках и упаковка из десяти таких коробок — разные количества. Не записывайте их как одну штуку без правила пересчёта.
Для начала достаточно такой карточки:
| Поле | Учебное значение | Зачем нужно |
|---|---|---|
| Артикул | DEMO-BOX-A | Находить одну позицию при разных названиях |
| Наименование | Коробка Демо-А | Понимать, какой товар лежит на полке |
| Единица | шт. | Не смешивать штуки, упаковки и килограммы |
| Склад | Учебный склад | Отделять места хранения |
| Физический остаток | 20 | Знать учётное количество на складе |
| Резерв | 0 | Видеть количество под подтверждённые заказы |
| Доступно | 20 | Понимать, сколько можно обещать следующему покупателю |
Перед вводом начального остатка пересчитайте товар и зафиксируйте дату. Если продолжать продажи во время пересчёта, отдельно учитывайте движения между моментом проверки и началом работы новой системы. Иначе расхождение появится ещё до первой операции.
Разделите остаток, резерв и доступное количество
В нашей модели используются две формулы:
Остаток после операции = остаток до неё + приход − выбытие.
Доступно = физический остаток − резерв.
Здесь физический остаток — число в учётной системе. Его соответствие полке подтверждает пересчёт. Резерв не убирает коробки со склада: он означает, что часть количества нельзя обещать другому заказу.
Допустим, на складе 30 коробок, из них 8 зарезервированы. Доступны 22. После отгрузки пяти коробок из этого резерва останется 25 коробок и резерв 3. Доступное количество по-прежнему 22: отгрузка уменьшила оба показателя на пять.
Правила резерва задают явно. В этом примере нельзя резервировать будущие поступления или уходить в минус. Другие системы могут разрешать резерв под ожидаемую поставку — например, это описано в справке МоегоСклада о резервах. Не переносите чужие настройки в своё приложение молча.
Записывайте движения отдельными операциями
Одна строка с текущим количеством не объясняет, куда делись две коробки. Нужен журнал: дата, ID операции, товар, склад, тип, количество, основание и ответственный. В учебном примере достаточно ID и количеств; в рабочем процессе потребуется связь с заказом или документом.
| Операция | Остаток | Резерв | Что проверить |
|---|---|---|---|
| Приход | Увеличивается | Не меняется | Товар действительно принят, единицы совпадают |
| Резерв | Не меняется | Увеличивается | Свободного количества хватает |
| Отгрузка из резерва | Уменьшается | Уменьшается | Есть резерв по нужному заказу |
| Снятие резерва | Не меняется | Уменьшается | Снимается существующий резерв |
| Списание | Уменьшается | Не меняется | Не затронут товар, обещанный клиентам |
Для возврата или исправления ошибки создавайте новую связанную запись с причиной. Не стирайте старое движение: иначе позже невозможно восстановить расчёт. Возвращённый товар сначала проверяют; если его нельзя снова продавать, не увеличивайте свободный остаток автоматически.
В рабочих складских системах операции сопровождаются документами. Например, 1С:УНФ отдельно описывает приёмку, отгрузку, резервирование и инвентаризацию. Наш короткий журнал помогает проверить логику приложения, но не воспроизводит весь документооборот такой системы.
Проверьте расчёты на пяти движениях
Возьмём один товар и начальные 20 штук. Выполняйте строки последовательно, сравнивая все три показателя.
| ID | Действие | Количество | Остаток после | Резерв после | Доступно после |
|---|---|---|---|---|---|
| Старт | Начальное состояние | — | 20 | 0 | 20 |
| P1 | Приход | 10 | 30 | 0 | 30 |
| R1 | Резерв | 8 | 30 | 8 | 22 |
| S1 | Отгрузка из резерва | 5 | 25 | 3 | 22 |
| C1 | Снять резерв | 3 | 25 | 0 | 25 |
| W1 | Списание | 2 | 23 | 0 | 23 |
Скачайте контрольные операции в CSV. Файл содержит вымышленные значения и ожидаемые результаты. Это лист проверки; автоматический импорт в созданное приложение не предполагается.
В приватном превью Mottorable 28 октября 2026 года проверили эту последовательность: все пять движений дали значения из таблицы. Повтор W1, резерв сверх доступного количества и отгрузка без резерва были отклонены. Дробное и отрицательное количество также не изменили остатки. Проверка относится к учебному симулятору в одной сессии, а не к серверному учёту.
Проверьте и ошибочные действия после W1:
- повторный W1 с тем же ID не должен ещё раз списать две штуки;
- резерв 24 при доступных 23 должен завершиться отказом;
- отгрузка одной штуки из пустого резерва должна завершиться отказом;
- количество 1,5 для товара, который считаем целыми штуками, нельзя округлять молча;
- после отказа показатели и число строк журнала должны остаться прежними.
ID защищает от повторной отправки одной операции. Для рабочего сервиса эту проверку нужно выполнять на сервере вместе с изменением остатка: два сотрудника могут одновременно увидеть одно доступное количество. Блокировка кнопки в браузере сама по себе такую гонку не устраняет.
Что выбрать: таблицу, готовую программу или своё приложение
Таблица подходит для первой проверки структуры, когда ответственный может контролировать все изменения. Разнесите справочник товаров и журнал движений, защитите расчётные столбцы и договоритесь, кто вводит операции. Не исправляйте остаток вручную поверх формулы, чтобы скрыть расхождение.
Готовую складскую программу стоит проверять первой, если нужны типовые закупки, партии, сроки годности, документы и связь с торговым оборудованием. Сравнивайте решение на своём маршруте: приняли товар, зарезервировали, частично отгрузили, вернули. Одного красивого отчёта об остатках недостаточно.
Своё приложение для внутренних процессов имеет смысл, когда есть особая задача: например, мастерская выдаёт упаковку по заданиям, а сотрудникам нужен простой экран вместо большой учётной системы. До разработки определите, где находится основной учёт и кто отвечает за сверку. Не создавайте второй независимый остаток, который никто не будет согласовывать с первым.
Если задача связана с клиентами и сделками, начните с гайда по созданию CRM. Движение товаров — отдельный процесс; заказ клиента ещё не означает отгрузку со склада.
Задание для учебного приложения в Mottorable
Начните с одной позиции и вымышленных данных. Так проще заметить двойное списание и проверить формулы. Расширять справочник и подключать рабочие записи стоит после приёмки.
Создай учебное приложение учёта остатков небольшой мастерской.
Только приватное превью, без публикации и реальных данных.
Хранение в памяти. Покажи, что обновление сбрасывает пример.
Один склад, товар «Коробка Демо-А», единица шт.
Начальный остаток20, резерв0, доступно20.
Форма: уникальный ID операции, тип и целое положительное количество.
Типы: Приход, Резерв, Отгрузка из резерва, Снять резерв, Списание.
Приход увеличивает остаток. Резерв увеличивает только резерв.
Отгрузка из резерва уменьшает остаток и резерв одновременно.
Снять резерв уменьшает только резерв.
Списание уменьшает остаток, не затрагивая зарезервированное.
Доступно=остаток−резерв. Все показатели остаются неотрицательными.
Проверяй Number.isInteger; дроби не округляй.
Резерв и списание запрещены сверх доступного количества;
отгрузка и снятие резерва запрещены сверх резерва.
Любой повтор использованного ID отклоняй без изменения данных.
Журнал: ID, тип, количество, остаток, резерв, доступно после.
Не удаляй старые операции. Ошибка не добавляет строку.
Добавь сброс примера, подписи полей и удобную мобильную форму.
Проверка: P1приход10→30/0/30; R1резерв8→30/8/22;
S1отгрузка5→25/3/22; C1снятьрезерв3→25/0/25;
W1списание2→23/0/23. ПовторW1 не меняет23/0/23.
Резерв24, отгрузка1 без резерва и количество1.5 отклоняются.
Не подключай кассу, оплату, маркировку, внешние API или БД.В задании один товар и данные в памяти. Касса, маркировка и реальные документы не подключаются.
Запустить ТЗ в MottorableЭто задание создаёт учебный симулятор. Сохранение на сервере, разделение прав, одновременная работа сотрудников и обмен с другими программами требуют отдельной реализации и проверки. Общий порядок приёмки разобран в статье о внутреннем приложении.
Перед использованием на реальном складе
Сверьте начальные количества с фактическим пересчётом. Затем выполните операции от имени двух сотрудников: проверьте, кто может создавать движение, кто видит историю и кто разрешает исправления. Повторите сохранение после выхода из аккаунта и на другом устройстве.
Попробуйте одновременно зарезервировать последние единицы из двух сессий. Итог не должен становиться отрицательным или обещать один товар двум покупателям. Проверьте повтор запроса после обрыва связи: одна подтверждённая операция должна оставаться одной.
Заранее определите способ выгрузить журнал и восстановить данные из резервной копии. Пока эти проверки не пройдены, оставляйте пример учебным. Когда появятся надёжные движения, их можно вывести в дашборд, отдельно от выручки и денежных поступлений.
Частые вопросы
Как начать складской учёт с нуля?
Выберите место хранения и список товаров, задайте артикулы и единицы, пересчитайте начальные количества. После этого записывайте каждое движение в журнал и регулярно сверяйте учёт с фактическим наличием. Программу выбирайте под эти операции.
Чем остаток отличается от доступного количества?
В нашем примере остаток показывает учётное количество на складе, а доступно — остаток за вычетом резерва. Зарезервированный товар ещё лежит на полке, но уже обещан под заказ. Правила ожидаемых поставок здесь не используются.
Почему после отгрузки доступное количество не уменьшилось?
Если отгружен товар из резерва, одинаково уменьшаются остаток и резерв. Например, было 30/8/22, отгрузили 5 — стало 25/3/22. Повторно вычитать пять из доступного количества не нужно.
Можно ли вести склад в обычной таблице?
Можно начать со справочника и журнала, если процесс позволяет контролировать изменения. При одновременной работе, сложных правах или обмене с другими системами отдельно проверяйте ограничения выбранного инструмента и порядок сверки.
Готов ли сгенерированный пример для реального бизнеса?
Нет. Учебное превью проверяет правила и интерфейс на вымышленных данных. Рабочий сервис принимают отдельно: сохранение, права, защита от повторов и одновременных операций, выгрузка и восстановление.