Android в warehouse/WMS — это не про красивое демо

Это про рабочий инструмент, которым пользуются каждый день: принимают товар, перемещают, собирают заказы, сканируют штрихкоды, работают с ТСД и ждут, что приложение просто не будет мешать работе.

Однажды меня пригласили в команду, где нужно было написать мобильный клиент для WMS на 1С. Задача сначала звучала довольно просто: - есть WMS, - есть родное мобильное приложение на ТСД, - есть складские сотрудники, - и есть желание сделать собственный Android-клиент, который можно развивать, поддерживать и адаптировать под процессы компании.

Но довольно быстро стало понятно, что это не просто “написать несколько экранов”. Я начал разбираться, как родной клиент общается с сервером. Так я вышел на SOAP API. Для меня на тот момент это была новая тема, поэтому пришлось погрузиться в WSDL, схемы, структуру экранов и формат обмена. Постепенно стало понятно, что сервер отдает не просто данные, а фактически описание интерфейса: кнопки, таблицы, поля ввода, label-элементы и другие элементы. По сути, это был backend-driven UI для склада. И здесь очень удачно подошел Jetpack Compose. Он позволил динамически собирать экраны из набора заранее подготовленных компонентов, не превращая код в огромную простыню условий.

Отдельная часть работы — интеграция со сканерами.

Я изучал SDK для handheld Android-устройств, разбирался с особенностями ТСД, barcode scanning и разными сценариями работы на складе. Самым удобным вариантом для меня оказался Zebra DataWedge: штрихкод можно было получать почти как обычный ввод, без лишней борьбы с SDK.

И вот тут быстро стало понятно, что складское приложение живет совсем не в тех условиях, что обычное приложение для клиента.

Важно, чтобы после сканирования не терялся фокус. Чтобы экран не заставлял сотрудника делать лишние нажатия. Чтобы таблицы были читаемыми на маленьком экране ТСД. Чтобы приложение не мешало человеку, который работает с устройством всю смену.

Примерно за полгода удалось собрать MVP и протестировать его на реальном складе.

Потом был пилот. Потом доработки. Потом оптимизация. Потом production-запуск на нескольких складах торговой сети.

После этого проекта я стал гораздо спокойнее относиться к “некрасивым” внутренним приложениям.

В складском Android-приложении главное — не эффектная анимация и не идеальный UI.

Главное — надежность, скорость, понятный интерфейс и предсказуемое поведение.

Потому что для склада Android-приложение — это не витрина.

Это инструмент.