Кейсы 6 мин чтения

Паллетный учёт на ТСД для оптовика: приложение и расширение 1С

Оптовик мясной продукции, 7 терминалов на Android. Приложение для учёта паллет и расширение для 1С УТ: приёмка фуры, разделение, россыпь, отгрузка, этикетки с QR. К ноябрю добавились сверка склада с терминала, работа без связи и печать на сервере 1С, которая заработала 3 ноября. Сейчас расширение 2.5.4 и приложение 1.5.3 у заказчика, идёт внедрение.

кейсТСД1Сскладской учёт

Коротко (TL;DR)

  • Оптовик мясной продукции, 7 терминалов сбора данных на Android. Нужен учёт паллет: приёмка фуры, формирование, разделение и расформирование, отгрузка целыми паллетами и россыпью. Товарный учёт в 1С УТ не трогаем.
  • Сделал две части: приложение на Flutter для терминалов и расширение для 1С УТ с HTTP-сервисом. Сканирование GS1-128 и EAN, этикетка 100×150 с QR, запрет смешивать в отгрузке паллеты разных организаций.
  • К 3 ноября расширение дошло до 2.5.4, приложение до 1.5.3. Добавились сверка склада с терминала, работа без связи, печать этикеток с терминала через сервер 1С, поиск по части слова и нумерация палет по номеру терминала.
  • Статус на 5 ноября: идёт внедрение у заказчика, печать с терминала заработала 3 ноября. Замечания, которые приходят по ходу, закрываю новыми версиями.
Хотите внедрить это у себя?

Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.

Обсудить автоматизацию

На складе мясного опта товар ходит паллетами, а 1С видит его позициями и килограммами. Между этими двумя взглядами и теряется порядок: какая коробка на какой паллете, откуда паллета пришла и куда уехала. Расскажу, как я собрал приложение для терминалов и расширение для 1С, которые закрывают паллетную часть и не ломают товарный учёт, и что поменялось с октября.

Задача

Заказчик: оптовик мясной продукции, несколько организаций, импортный товар. На складе 7 терминалов сбора данных на Android и Wi-Fi по всей территории. Товарный учёт ведётся в 1С УТ, и эту границу не трогаем.

Нужен был учёт паллет на всех этапах движения. Приёмка фуры. Формирование паллеты из коробок. Разделение паллеты на несколько и расформирование целиком. Отгрузка целыми паллетами и россыпью, когда уходит часть коробок.

Что я сделал

Приложение написал на Flutter, одна кодовая база под терминалы, которые уже стоят на складе. Данные идут через слой-интерфейс: экраны не знают, откуда берутся паллеты. В сентябре за ним стояла демо-реализация, в октябре подключился HTTP-сервис 1С, и экраны при этом не переписывались.

Сканирование: штрихкоды GS1-128 и EAN. GS1-128 несёт в одном коде несколько полей, в том числе вес, поэтому его разбор вынесен в отдельную логику. Где кода с весом нет, кладовщик вводит вес руками. Этикетка паллеты 100×150 миллиметров с QR-кодом и штрихкодом SSCC: паллету потом сканируют и сразу видят, что на ней. Паллеты разных организаций в одну отгрузку не попадут, это правило вшито в код.

Вторая половина живёт внутри 1С УТ как расширение. В нём HTTP-сервис для терминалов, печать этикеток и упаковочного листа, документ корректировки, отчёты и роли из ТЗ заказчика. Документ по складу, где работает терминал, не двигает остатки товара, пока ТСД не отметит его обработанным.

Обмен описал документом до подключения. Каждая операция несёт ключ идемпотентности: если терминал отправил приёмку повторно, 1С узнает ключ и не проведёт её дважды. Коды ошибок описаны заранее, чтобы кладовщик видел понятную причину.

Что было сложно

Граница с 1С. Соблазн начать двигать остатки прямо из терминала велик, но товарный учёт уже работает, и любое вмешательство в него рискует всем складом. Поэтому приложение отвечает за паллеты и их состав, 1С остаётся источником правды по товару.

Операции, которые меняют структуру. Разделение, расформирование и россыпь: коробки переезжают с паллеты на паллету, и в любой момент должно быть ясно, где какая. Эту логику закрывал тестами, а для ввода со сканера написал fuzz-тесты с испорченными кодами.

Живая база. С начала октября расширение стоит на сервере заказчика с копией рабочей базы, и каждую версию я прогонял там через приложение в эмуляторе терминала. Копия нашла то, чего не видно на демо-данных: формат дат 1С и обратный порядок работы склада, где реализацию заводят утром, а паллету собирают днём.

Безопасность. Заказчик заметил, что через учётную запись сервиса можно открыть 1С целиком. У роли обмена я убрал право запуска клиента.

Что изменилось к концу октября

В первую неделю октября версии шли от 2.0 до 2.4: статусы документов, перемещение в два этапа, россыпь, режим килограммов. Дальше пошли замечания с терминалов.

Работа без связи

Первое замечание: без связи терминал не пускал. В 1.4.1 вход без связи стал постоянным: при входе со связью приложение запоминает солёный хеш, пароль на терминале не хранится. Списки берутся из кэша, операции встают в очередь. В 1.4.4 запас номеров для новых паллет вырос с 5 до 20, позднее его заменила нумерация по номеру терминала, о ней ниже. Без связи не работают только печать и самый первый вход.

Список складов приходит из 1С при каждом запуске.

Печать на сервере

Печать шла через монитор на компьютере склада: нет запущенной 1С, нет этикетки. Принтеры у заказчика стоят на сервере, поэтому в 2.4.2 появилась отметка «Печатать на сервере 1С» и регламентное задание, которое раз в 30 секунд печатает очередь. 28 октября пришло новое: терминал пишет «отправлено на принтер», а принтер молчит. В 2.5.1 терминал начал показывать, на каком принтере напечатано, или жёлтым «в очереди» с причиной. Чем кончилась эта история, расскажу в разделе про ноябрь.

Сверка склада

Заказчик попросил убедиться, что можно пройти склад и проверить паллеты. Пересчёт одной паллеты был, сверки всего склада не было. В 2.5.0 она появилась: кладовщик сканирует паллеты подряд, терминал показывает «найдено столько-то из стольких», лишние паллеты помечает и говорит, где они числятся по 1С. Сверка работает и без связи. В 1С результат ложится в отчёт, сверху ненайденные.

Мелочи, без которых склад встаёт

Паллета из россыпи оставалась в статусе «Новая», исправлено в 2.4.4. Поиск по части слова, без учёта регистра и буквы «ё», появился в россыпи, в паллетах на складе и при выборе товара. И к запуску я собрал сквозную инструкцию от настройки администратора до шпаргалки кладовщика.

Что изменилось к ноябрю

Печать с терминала заработала

Заказчик настроил склады и принтеры, а терминал 1.5.1 показал причину: «Метод недоступен на сервере». Это ограничение платформы 8.5: табличный документ нельзя напечатать на сервере. Я воспроизвёл его локально. Тест версии 2.5.1 уже ловил эту ошибку, а я принял её за «нет принтера». Это мой промах.

В 2.5.2 сервер записывает этикетку в PDF и отдаёт её программе печати SumatraPDF с нужным принтером. Заказчику пришлось поставить программу на сервер 1С и снять безопасный режим у расширения. Ошибки названы прямо: нет программы, безопасный режим, код возврата. 3 ноября заказчик переслал переписку со склада: этикетки печатаются.

Что нашёл склад

В 2.5.3 на этикетке стоял ответственный, который выдавал номера, а не кладовщик, вошедший в терминал. Теперь ставится формирующий. По просьбе склада в приложении 1.5.2 в списке «Палеты на складе» видны товар и килограммы без захода в карточку.

Номера по номеру терминала

Заказчик предложил отказаться от запаса номеров и нумеровать палеты по префиксу терминала. В 2.5.4 и 1.5.3 у каждого терминала в 1С есть номер от 1 до 9. Серийный номер палеты складывается из номера терминала и его счётчика, поэтому код вида 10000032 читается как палета 32 терминала 1. Терминал считает номера сам, в том числе без связи. Если 1С отклонила номер, он откатывается, а занятый пропускается. Старый запас очищается. Тесты нумерации проходят 10 из 10, приложение 123 из 123.

Что получилось

ЧтоСостояние на 5 ноября
Расширение 1С2.5.4, передано заказчику
Приложение ТСД1.5.3, передано заказчику
Тестыприложение 123, 13 наборов автотестов 1С, регрессия зелёная
Без связивход, списки, операции, сверка и номера палет
Печатьс терминала через сервер 1С, заработала 3 ноября
Инструкциясквозная, для администратора и кладовщика
Складидёт внедрение

Система разработана, проверена на копии рабочей базы и передана заказчику. Внедрение идёт, и пока оно не закончено, сданным складом я это не называю.

Что дальше

Ближайшее: довести внедрение и проследить, как склад живёт с нумерацией по терминалам. Маркировка пойдёт отдельным этапом.

Порядок здесь важен. Сначала сервис 1С должен честно отвечать понятными сообщениями, только потом терминалы уходят к кладовщикам. Печать это показала: пока терминал молчал о причине, на складе думали, что сломалось всё.

Частые вопросы

Почему не делать всё прямо в 1С?

Товарный учёт в 1С УТ уже работает, и трогать его не нужно. Паллетный слой это отдельная задача со своими экранами для терминала. Приложение отвечает за паллеты, 1С за товар. Как выбирать между своим приложением и готовым решением, я разбирал отдельно.

Что будет, если на складе пропадёт связь?

Кладовщик продолжает работать: списки берутся из кэша, операции и сверка встают в очередь. Когда связь вернётся, очередь уйдёт в 1С, а повторная отправка не создаст дубль.

Можно ли печатать этикетки без компьютера на складе?

Да, если принтер доступен серверу 1С. На платформе 8.5 печать идёт через PDF и программу печати на сервере. Терминал показывает, где напечатано, или почему задание ждёт в очереди.

Как проверить, что паллеты на месте?

Сверкой склада: кладовщик проходит склад с терминалом и сканирует паллеты. В 1С появляется отчёт, где сверху ненайденные паллеты, ниже лишние с адресом по данным 1С.

Коротко о главном

Паллетный учёт на терминалах можно построить рядом с 1С, не ломая товарный учёт. Держится он на слое-интерфейсе, договорённости об обмене до подключения, ключе идемпотентности и правилах, вшитых в код.

Внедрение приносит замечания, которых не видно ни на демо, ни на копии базы. Работа без связи, печать на сервере, сверка склада и нумерация по терминалам появились именно оттуда. Сейчас идёт внедрение, и я веду его дальше.

Если у вас склад на 1С и нужно приложение для ТСД под свои операции, от приёмки и паллет до отгрузки и этикеток, соберу его и договорюсь с вашей 1С через понятный протокол. Подробнее про автоматизацию процессов. Напишите в Telegram, MAX или VK.

Обсудим вашу задачу

Что я делаю для бизнеса

Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ
Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх