Непонятно, что уже прошли
Счёт идёт по списку товара. Какой угол зала закончен, а какой ещё нет, видно только со слов бригады.
Инвентаризация складов и магазинов
Склад или торговый зал размечается на зоны прямо на плане. У каждого места свой штрихкод, у каждого счётчика свои зоны — и подсчёт идёт по этой карте. Приложение на ТСД и смартфоне работает без сети.
Открытый стенд
На стенде вымышленный магазин: торговый зал и подсобный склад на плане, дерево зон от стеллажей до полок, штрихкоды мест, справочник товара на три сотни позиций и уже идущая инвентаризация.
Заказчик, магазин, товар и штрихкоды на стенде придуманы для показа: настоящих данных там нет. Стенд общий и раз в час возвращается в исходное состояние, поэтому сделанное на нём не сохраняется, а на время сброса он ненадолго закрывается. Гостю даны права контролёра — те же, с какими на объекте работает человек, ведущий инвентаризацию.
Терминал умеет читать штрихкод товара и отдавать строки в базу. Всё остальное, из-за чего инвентаризация переделывается, остаётся на людях и на бумаге.
Счёт идёт по списку товара. Какой угол зала закончен, а какой ещё нет, видно только со слов бригады.
Двое заходят в один стеллаж, соседний не считает никто. Разбирают это уже по расхождениям, задним числом.
Wi-Fi добивает не везде, морозильник и металл глушат сигнал. Приложение, которое ждёт ответ сервера, останавливает работу.
Когда на экране написано, сколько должно быть, цифру подгоняют под базу. Инвентаризация превращается в театр.
Отличие первое
Этаж, помещение, стеллаж, секция, полка, ячейка — узлы одного дерева зон. Глубина не ограничена: структура объекта у каждого заказчика своя. Сканируемое место — это то, на что наклеен стикер, будь то ячейка, ящик или палета.
Редактор совместный: правки идут операциями, а не сохранением плана целиком, чужие изменения приходят сразу, расхождение версий возвращает отказ вместо тихой перезаписи.
Отличие второе
Интерфейс отдаётся из бандла приложения, а не с сервера. Скан пишется в локальную базу устройства и рисуется на экране сразу — сеть в этот момент не участвует ни на одном экране.
Данные на объекте невосстановимы, поэтому клиент нативный, а хранилище — SQLite в каталоге приложения. Браузерное хранилище система вправе вычистить сама.
Отличие третье
Два главных источника переделки — посчитанное дважды место и подогнанная под учёт цифра. Оба закрываются порядком работы, а не дисциплиной бригады.
Распределение приходит вместе с пакетом данных на объект, до выхода в зал. Это снимает единственный конфликт, который в такой работе бывает: двое посчитали одно место, не зная друг о друге.
Роль счётчика не видит учётный остаток. Это не настройка, которую можно отключить «на сегодня», а поведение роли. Подогнать цифру не под что.
Первый проход — вслепую. Расхождение выше порога отправляет зону на второй проход, его делает другой человек и тоже не видит первую цифру. Совпало — принято. Не совпало — третий проход с контролёром. Сама сверка с учётом и пороги расхождений — предмет ближайшего этапа, о готовности сказано ниже.
Закрыть место без единого скана нельзя. «Здесь пусто» — отдельная отметка с подтверждением: в ведомости это недостача на всю зону, и она должна быть заявлена, а не забыта.
Подготовка объекта
Не всегда есть план и не всегда есть время рисовать его заранее. Ревизор обходит склад, сканирует уже наклеенные стикеры и задаёт места на месте: стикер привязывается к существующей зоне либо создаёт новую потомком найденного родителя. Геометрия задаётся пальцем на плане, углы тянутся за размер.
Разметка вынесена в отдельный режим намеренно: скан стикера во время подсчёта не должен переклеивать место.
Пакетная печать по диапазону мест, QR или Code128. QR устойчивее к грязи и читается смартфоном под углом, Code128 привычнее для терминала. Человекочитаемый код дублируется на этикетке.
Одно приложение на все платформы бригады. Сервер ставится там, где заказчику удобнее, включая объект вообще без интернета.
Zebra, Urovo, Honeywell. Аппаратная кнопка даёт мгновенный скан без камеры — основной режим на складе. Профили сканирования настраиваются, префикс и суффикс учитываются.
Камера через нативное распознавание. Подходит там, где терминалов не хватает или считают силами магазина.
Развёртывание одинаковое. На объекте — мини-ПК или ноутбук с фиксированным адресом, адрес раздаётся устройствам QR-кодом. Интернет для подсчёта не нужен.
Приложение собрано на общем коде для iOS, Android-смартфонов и Android-терминалов. Логика подсчёта отделена от интерфейса, сканер и хранилище спрятаны за интерфейсами.
Задачи у двух сторон разные, и система смотрит на них по-разному.
Розничные сети и предприятия
Инвентаризация делается силами магазина или склада, часто вечером и в сжатый срок. Главная проблема — не скорость сканирования, а доверие к результату.
Подрядчики по инвентаризации
Бригада, устройства и график объектов. Платят за посчитанный объект, поэтому важны выработка людей, отсутствие переделок и скорость выхода на новом складе.
Модель оплаты обсуждается под сценарий работы: за объект, за устройство или подпиской. Условия называем после разговора о задаче.
Продукт в разработке, и мы говорим об этом прямо. Ниже — состояние на сегодня, без округления в свою пользу.
Сверка, ведомость и выгрузка в учётную систему — назначение системы и предмет ближайших этапов. Сегодня они не работают, и выдавать их за готовые мы не будем.
Расскажите про объект: что считаете, сколько мест, какие устройства уже есть и как сейчас проходит инвентаризация. Ответим по существу и покажем систему на данных, похожих на ваши.