Как реализовать систему мультипикинга и оптимизировать маршруты сборки заказов на складе в 1С

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

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

Постановка задачи и архитектурный подход

Типичная задача комплектации подразумевает наличие очереди заказов, которые необходимо распределить между «стаей» кладовщиков. Для повышения эффективности используется метод мультипикинга (Cluster Picking), когда один сборщик за один рейс по складу собирает сразу несколько заказов (например, 4 заказа в 4 разные корзины).

Рассмотрим основные требования к системе:

  1. Контроль грузоподъемности и объема каждой корзины (задача о рюкзаке).
  2. Построение кратчайшего маршрута по ячейкам (задача коммивояжера).
  3. Учет порядка загрузки в автомобиль (LIFO — последний загружен, первый выгружен).
  4. Обеспечение работы на мобильных устройствах (ТСД) в условиях нестабильной связи.

Важно понимать, что такие тяжелые расчеты не должны выполняться на стороне мобильного клиента. Проанализируем техническую сторону: мобильное приложение должно получать уже готовый массив данных (задание на сборку) в формате JSON или через специализированный сервис.

Алгоритмы построения маршрута по складу

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

Простейшая реализация в 1С может базироваться на введении дополнительного реквизита у ячейки — ПорядокОбхода. Рассмотрим пример структуры запроса для формирования очереди:


ВЫБРАТЬ
    СкладскиеЯчейки.Ссылка КАК Ячейка,
    СкладскиеЯчейки.ПорядокОбхода КАК ИндексМаршрута,
    ТоварыВЗаказе.Номенклатура,
    ТоварыВЗаказе.Количество
ИЗ
    Справочник.СкладскиеЯчейки КАК СкладскиеЯчейки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОстаткиТоваровПоЯчейкам КАК Остатки
    ПО СкладскиеЯчейки.Ссылка = Остатки.Ячейка
ГДЕ
    Остатки.Заказ В (&МассивЗаказов)
УПОРЯДОЧИТЬ ПО
    СкладскиеЯчейки.ПорядокОбхода ВОЗРАСТАНИЕ

Решение «задачи о рюкзаке» для комплектации корзин

Прежде чем отправить сборщика в рейс, система должна выполнить картонизацию. Это процесс виртуальной упаковки товаров в имеющуюся тару. Мы должны убедиться, что товары N заказов физически поместятся в N корзин на тележке.

Рассмотрим алгоритм действий:

  1. Для каждой позиции заказа получаем весогабаритные характеристики (ВГХ).
  2. Сравниваем суммарный объем и вес с ограничениями корзины.
  3. Учитываем правила товарного соседства и хрупкости (например, арбуз не должен лежать на яйцах). Для этого товарам присваиваются категории «тяжелое», «стандартное», «хрупкое».

При планировании рейса МаршрутСборщика должен выстраиваться так, чтобы тяжелые товары (напитки, консервы) собирались в первую очередь и оказывались на дне корзины, а хрупкие — в конце маршрута.

Цветовая дифференциация и Cluster Picking

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

С точки зрения кода 1С, это реализуется через перечисление или сопоставление индекса заказа в рейсе с массивом цветов:


Функция ПолучитьЦветКорзины(ИндексЗаказа)
    Цвета = Новый Массив;
    Цвета.Добавить("Красный");
    Цвета.Добавить("Синий");
    Цвета.Добавить("Зеленый");
    Цвета.Добавить("Желтый");
    
    Возврат Цвета[ИндексЗаказа % Цвета.Количество()];
КонецФункции

Связка WMS и логистики (TMS)

Важным пунктом является порядок сборки в контексте будущей доставки. Чтобы грузчикам не приходилось перерывать весь кузов автомобиля, товары должны загружаться в порядке, обратном маршруту следования (LIFO). Выясним причину такой сложности: система должна знать индекс точки разгрузки еще на этапе планирования складской сборки.

Проанализируем цепочку данных: Маршрут доставки (TMS) -> Очередность выгрузки -> Очередность загрузки в авто -> Группировка заданий на сборку (WMS).

Обработка инцидентов при сборке

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

  1. Сборщик отмечает нехватку (кнопка «Товар не найден»).
  2. Система автоматически блокирует ячейку для проведения инвентаризации.
  3. Если на складе есть дублирующие ячейки с этим товаром, система мгновенно перестраивает маршрут, добавляя новую точку заезда.
  4. Если товара больше нет, позиция помечается как «не собранная», и заказ уходит на корректировку.

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

Использование СКД в мобильном приложении

Хотя основная логика расчетов лежит на сервере, система компоновки данных (СКД) может эффективно использоваться для формирования отчетов о производительности сборщиков прямо на экране ТСД. Однако стоит помнить, что КомпоновщикНастроек и тяжелые запросы в мобильном клиенте могут работать медленно. Рекомендуется подготавливать данные на сервере в виде таблицы значений (ТЗ) и передавать её в отчет как внешний набор данных.

Внедрение такой системы — это не просто написание кода, а создание живого механизма, который учитывает физику склада, математику графов и человеческий фактор.

← На главную