Что происходит после сканирования товара
Для сотрудника склада операция выглядит элементарно
Он наводит ТСД на штрихкод. Раздаётся сигнал.
На экране появляется результат:
«Товар принят»
Всё занимает секунду или даже меньше.
Но за этой секундой может находиться несколько систем, десятки проверок и целая цепочка автоматических действий.
Само сканирование — только начало операции.
Дальше системе необходимо понять, что именно отсканировали, зачем это сделали, имеет ли сотрудник право выполнить операцию, соответствует ли товар текущему заданию, можно ли изменить остаток и как зафиксировать результат так, чтобы он не потерялся и не был записан дважды.
В хорошо спроектированной складской системе сотрудник видит один простой экран, а внутри происходит примерно следующее:
Именно эта скрытая часть определяет надёжность складской автоматизации.
ТСД не «меняет остаток» самостоятельно
Это важный момент.
Терминал сбора данных обычно выступает интерфейсом сотрудника, а не владельцем складской информации.
Он получает код, отправляет его в систему и показывает результат.
Это разделение важно.
Если позволить устройству самостоятельно считать, сколько товара находится на складе, разные терминалы очень быстро начнут работать с разными версиями реальности.
Шаг первый: сканер получает физический код
Когда сотрудник нажимает кнопку сканирования, устройство считывает графическое представление идентификатора.
Это может быть:
На этом этапе система ещё не знает, что перед ней.
Она получила только значение:
Дальше начинается программная часть.
Один код не всегда означает одну сущность
В простом магазине можно предположить:
штрихкод → товар
В реальном складе всё может быть сложнее.
Один и тот же код может использоваться в разных контекстах.
Кроме того, системе могут быть важны:
Поэтому после сканирования система должна определить контекст операции.
И только после этого можно принимать решение.
Сначала система должна понять, что сейчас делает сотрудник
Представим, что сотрудник выполняет приёмку. Он сканирует товар.
Система знает текущие параметры сессии:
Сотрудник сканирует именно этот товар. Система сравнивает полученный код с текущим заданием.
И это уже не просто «ошибка штрихкода».
Это бизнес-правило склада.
Почему проверку нельзя оставлять только на ТСД
Иногда пытаются сделать приложение максимально самостоятельным.
На устройство заранее загружают справочник товаров и правила.
Это действительно позволяет работать быстрее. Но возникает проблема.
Что произойдёт, если товар вчера был переименован?
Или изменился статус?
Или товар уже зарезервирован?
Или остаток изменился другим сотрудником?
Локальные данные могут устареть.
Поэтому критические проверки должны выполняться на стороне системы, которая является источником актуальных данных.
После сканирования формируется запрос
Упрощённо запрос может содержать:
{
"operation": "receipt",
"task": "5821",
"barcode": "4820001234567",
"warehouse": "main",
"location": "A-03-14",
"quantity": 1
}В реальной системе структура будет другой, но смысл примерно такой:
«В рамках этой операции сотрудник выполнил вот это действие с этим объектом».
Это намного надёжнее, чем просто отправить строку со штрихкодом.
Сервер определяет, можно ли выполнять операцию
Получив запрос, система начинает проверки.
Если хотя бы одно критическое условие нарушено, операция не должна записываться.
Проверка прав — это не формальность
Представим двух сотрудников.
Работает строго на приёмке
Занимается только отгрузкой
Если А каким-то образом отправит запрос на операцию отгрузки, сервер не должен доверять тому, что показал интерфейс.
Правильная архитектура:
Скрыть кнопку на ТСД недостаточно.
Любая критическая операция должна быть защищена на серверной стороне.
Что делает WMS
WMS — это не просто экран для склада.
В зависимости от архитектуры системы она может отвечать за:
Поэтому после сканирования ТСД обычно обращается не напрямую к базе данных, а к сервису или API, который понимает складскую операцию.
А где здесь 1С?
Зависит от архитектуры конкретной компании.
WMS — основа учёта.
А 1С просто получает итоговые результаты операций.
Учёт в ядре 1С.
Складские операции выполняются непосредственно в решении на базе 1С.
Гетерогенная среда.
Отдельная WMS интегрирована одновременно и с 1С, и с тяжелой ERP.
Поэтому нельзя сказать, что после каждого сканирования ТСД обязательно обращается именно к 1С.
Правильный вопрос:
какая система является владельцем конкретной складской операции и остатка?
WMS и 1С могут отвечать за разные вещи
WMS может оперативно управлять физическим движением товара.
1С — отражать необходимые результаты в бухгалтерском и управленческом учёте.
При этом конкретная архитектура зависит от того, как построены процессы компании.
Самая важная проверка — состояние склада
Представим, что сотрудник пытается списать одну единицу товара.
Система должна детально декомпозировать остаток:
Фактически свободно может быть только:
15 - 4 - 2 = 9
Поэтому простого поверхностного условия «остаток больше нуля» может быть критически недостаточно.
Бизнес-правила должны учитывать реальные состояния товара.
Остаток — это не всегда одно число
В серьёзной складской системе полезно различать:
Например:
Если оператор оформляет отгрузку, система должна работать с правильным состоянием.
Именно здесь простая «таблица остатков» перестаёт отражать реальную складскую логику.
Что происходит при успешной операции
Допустим, сотрудник перемещает товар из ячейки A-03-14 в B-07-02.
После сканирования система последовательно выполняет целую цепочку действий:
На экране сотрудник увидит:
«Перемещение выполнено»
Но внутри произошло гораздо больше.
Почему нельзя просто изменить остаток
Если система просто сделает:
A-03-14: -1 / B-07-02: +1
она потеряет историю.
Через неделю возникнет вопрос:
Почему товар оказался здесь?
Поэтому складские системы обычно должны фиксировать саму операцию.
Например:
Так остаток становится следствием операций, а не загадочным числом в таблице.
История операций помогает восстанавливать события
Если остаток оказался неправильным, нужно найти причину.
Из истории можно пошагово восстановить всю последовательность:
Без журнала операций поиск ошибки превращается в ручное расследование.
Что происходит, если связь пропала
Вот здесь начинаются реальные сложности ТСД.
Что произошло?
Непонятно. Возможны два полярных сценария:
Если приложение просто повторит запрос, оно рискует создать дубль.
Для этого нужна идемпотентность
У каждой важной операции должен быть уникальный идентификатор.
operation_id: 9f31-5821-000184
Если запрос пришёл повторно, сервер может проверить:
«Такую операцию я уже выполнял?»
Если да — повторно изменять остаток не нужно.
Для складской автоматизации это один из принципиально важных механизмов надёжности.
Почему иногда лучше показать «обрабатывается»
Не каждую операцию можно подтвердить мгновенно.
Например, после сканирования нужно обратиться к нескольким сервисам. Вместо того чтобы заставлять сотрудника нажимать кнопку повторно, интерфейс должен вести его по состояниям.
Для сотрудника важно однозначно понимать состояние операции.
Ошибка должна быть понятна человеку
Плохой вариант:
Error 409
Оператору склада это практически бесполезно.
Лучше:
Операция не выполнена.
Товар уже находится в другой ячейке:
B-07-02
Проверьте фактическое местоположение.
Система должна переводить техническую ошибку в понятное рабочее действие.
А если сканируют не тот товар?
Это очень частая ситуация.
Например, задание: отсканировать Товар А в количестве 10 единиц, но оператор сканирует Товар Б.
Система должна определить ошибку до изменения складского состояния:
Операция не выполнена. При этом важно не просто сказать «неверный товар».
Можно сразу вывести на экран подсказку для быстрого исправления:
Ожидаемый товар по заданию:
Артикул 10482 // Ячейка A-03-14
Фактически отсканирован:
Артикул 10491
Это значительно сокращает время исправления ошибок на месте.
Сканирование нескольких единиц
В реальной работе сотруднику редко удобно каждый раз выполнять полный цикл:
Если нужно обработать 100 одинаковых товаров, интерфейс должен поддерживать массовый потоковый сценарий.
Но и здесь система должна учитывать дублирование.
Повторное сканирование одного и того же кода не всегда означает новую единицу.
Всё зависит от конкретного типа товара и установленных правил учёта.
Серийный товар требует другой логики
If каждая единица имеет собственный серийный номер, система должна учитывать именно его.
Ноутбук X
SN123456789
После сканирования нельзя просто увеличить остаток на единицу.
Нужно определить и зафиксировать состояние конкретного экземпляра.
Для серийного учёта это уже жизненный цикл конкретного объекта.
Партии и сроки годности добавляют ещё один уровень
Для продуктов, лекарств, химической продукции и других категорий может быть важно не только количество.
Тогда система может на ходу применять строгие логистические правила ротации: FIFO или FEFO.
И сотрудник просто сканирует код, а система сама определяет, допустима ли операция в данный момент.
После операции результат может уйти в несколько систем
Представим завершённую отгрузку. Складская система зафиксировала действие.
Но дальше результат веерно расходится по смежным контурам:
WMS
изменила физическое складское состояние;
1С
получила полные данные для регламентированного учёта;
ERP
каскадно обновила статус исходного заказа;
Доставка
получила агрегированную информацию о готовой отгрузке.
Сотрудник видит один результат.
А внутри компании изменяется несколько связанных процессов.
Именно здесь возникают самые сложные ошибки
Представим рассинхронизацию распределённой транзакции:
Если просто показать сотруднику абстрактное сообщение «Ошибка», абсолютно непонятно, что именно произошло.
Правильная архитектура должна чётко разделять слои для пользователя:
✓ Выполнена успешно (факт зафиксирован на складе)
⚠ Транзакция в 1С ожидает автоматической повторной отправки в очереди
Тогда сотруднику не предлагают повторно сканировать товар и случайно создавать опасные дубли остатков.
Очередь позволяет разнести эти процессы
Если 1С временно недоступна, складская операция не обязательно должна останавливаться.
Система гарантированно сохранит возникшее событие внутри себя и автоматически повторит передачу пакета позже.
Это особенно важно для больших распределённых складов, где непрерывная работа не может зависеть от кратковременного сбоя любой внешней системы.
Что видит сотрудник и что происходит внутри
В итоге одна обычная операция может выглядеть принципиально по-разному с двух сторон.
Разница между этими двумя представлениями и есть настоящая автоматизация.
Архитектура надёжного сканирования
В зрелой системе цепочка может выглядеть следующим образом:
Такая схема позволяет полностью отделить физическое действие сотрудника от последующей тяжелой обработки данных.
Скорость важна, но ещё важнее правильность
На складе часто говорят:
«Нам нужно, чтобы сканирование происходило мгновенно».
Это действительно важно.
Но ещё важнее, чтобы за эти 300 миллисекунд система не записала неправильную операцию.
Поэтому хорошая складская автоматизация оптимизирует сразу несколько параметров:
Если система работает быстро, но регулярно создаёт ошибки в остатках, её нельзя считать эффективной.
Что стоит проектировать заранее
Перед разработкой ТСД-интерфейса полезно ответить хотя бы на следующие вопросы:
Что является идентификатором товара?
Может ли один товар иметь несколько штрихкодов?
Учитываются ли партии?
Нужны ли серийные номера?
Как определяется текущая операция?
Где находится источник истины по остаткам?
Кто имеет право выполнять конкретное действие?
Может ли сотрудник работать без связи?
Что происходит при повторном сканировании?
Как система защищается от дублей?
Что происходит при сбое интеграции?
Какие операции можно отменять?
Где хранится история?
Как восстанавливается состояние после ошибки?
Если эти вопросы не определены заранее, проблемы почти неизбежно появятся уже на работающем складе.
Почему хороший ТСД-интерфейс кажется простым
Парадокс складской автоматизации в том, что чем сложнее внутренняя система, тем проще может выглядеть интерфейс для сотрудника.
Отсканируйте товар
✓ Товар принят
Следующий товар
Вся техническая сложность должна находиться там, где ей место — внутри архитектуры.
Итог
Сканирование товара — это не просто считывание штрихкода.
Это команда системе выполнить конкретную складскую операцию.
После получения кода необходимо определить контекст, проверить сотрудника, товар, задание, ячейку, количество и другие ограничения. Затем операция фиксируется, изменяется состояние склада, записывается история и при необходимости запускается обмен с 1С, ERP или другими системами.
В упрощённом виде путь выглядит так:
Именно поэтому хороший ТСД-интерфейс выглядит простым.
Сотрудник нажимает одну кнопку и получает один понятный результат. А внутри за это время работает целая система правил, проверок, журналов и интеграций.
Чем надёжнее эта скрытая цепочка, тем меньше ручных ошибок, расхождений в остатках и ситуаций, когда сотруднику приходится выяснять, «что на самом деле произошло» после одного сканирования.
API, Webhook или очередь сообщений?
Когда API есть, а интеграция всё равно не работает
Как соединить производство и корпоративные системы
Все инженерные материалы и экспертные статьи
Полный алфавитный справочник ИТ-терминов
🔒 Данные и доступ к системам заказчика обрабатываются в соответствии с согласованными требованиями к безопасности и конфиденциальности. Условия доступа, хранения и обработки данных определяются архитектурой проекта и договором.
Сайт носит исключительно информационный характер и не является публичной офертой в соответствии со статьёй 437 Гражданского кодекса РФ. Цены, состав и условия предоставления услуг уточняются при проектировании решения и фиксируются в договоре. Условия технического сопровождения и уровень сервиса могут дополнительно определяться отдельным соглашением (SLA).
Автоматизация бизнеса и ИИ-решения под ключ
Самозанятый Скопец Антон Викторович ИНН 741709260870