Каталог решений - Вариант автоматизации складских операций

Вариант автоматизации складских операций

Вариант автоматизации складских операций

В наличии

В статье описана реализация простой, но в тоже время универсальной и эффективной идеи.
Выводим инвентаризацию на другой уровень.

Категория:

Описание

Разрешите представиться: Алексей, 34 года, неангажированный интеллектуал.

Порядка 15 лет реализую себя как 1с-программист, в основном в сфере торговли.

Данная статья — своего рода "проба пера". Посчитал вариант решения задачи в достаточной мере уникальным, чтобы поделиться им.

***

ВСТУПЛЕНИЕ

Пару лет назад на предприятии розничной торговли алкоголем возникла дискуссия на тему эффективности инвентаризации. 

Основные моменты:

  • x2 mobilebase ds5 100% времени простаивают; (win, древней ревизии) 
  • плохая оптимизация процесса; (на пару магазинов и склад уходило 3 долгих дня без торговли) 

Предложена идея создать самодостаточное решение и уместить его во всего лишь одну "обработку".

Основные задачи:

  • возможность дополнительного заработка; (моя "слепая" вера в то, что можно заработать много в одиночку интелектуальным трудом на совесть)
  • решение должно быть универсально, привязано только к платформе; (следствие из предыдущего)
  • максимально простой и прозрачный механизм; (обслуживание и масштабирование)
  • гибкость в настройке; (должно одинаково хорошо выглядеть на всех клиентах)
  • многопоточность, как основной ресурс; (сила в количестве параллельных потоков)
  • админка; (потоков много, кто-то должен управлять ими)
  • аналитический блок; (возможность просматривать наработанные данные "со всех углов")

 

РЕАЛИЗАЦИЯ ИДЕИ

Схематически программный комплекс можно представить в следующем виде:

 

 

Периферия

  • epf-обработка, которая находится в общем сетевом каталоге; (в неё же записываются все данные)
  • клиенты с доступом к базе, запуск с помощью ярлыка; (/RunModeManagedApplication /execute)
  • для ТСД выделена отдельная сетевая машина, подключение идет к ней по RDP; (на ней настроена 1С и ярлыки)

 

Основная программа

Структура

Складские задачи формализованы и вынесены в отдельный блок — 80% программы получилось абсолютно универсальным.

Выяснилось, что основная работа сводится к заполнению и сравнению таблиц данных. (с нуля, либо повторение заранее известных)

Таблицы бывают двух видов:

плановая: 

  • объект; (основной срез учета, н-р номенклатура)
  • аналитика; (дополнительный срез учета, н-р характеристика (может быть несколько))
  • плановое количество; (сколько по плану, если нулевое — излишек)

фактическая: 

  • период; (время ввода записи — широко используется в аналитике)
  • пользователь; (кто ввел)
  • объект; 
  • аналитика; 
  • фактическое количество; (сколько по факту, если меньше плана — недостача)

Назовем заполнение таблиц "заданием", и будем считать его основной единицей в рамках программы. Сценариев выполнения заданий может быть несколько, поэтому дополнительно вводим разделение по "типу задания". Для каждого типа задания определено несколько обязательных процедур, которые работают по принципу произвольного кода "выполнить" — они вынесены в отдельный модуль. Таким образом сформировалось 20% интеграции. 

Как это работает

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

***

Программа встречает пользователя главным
меню,
которое состоит из трех пунктов:

  • задания; (список активных заданий)
  • настройки; (настройки программы) 
  • выход; (завершает работу системы) 

 

 

 

 

 

 

В настройках только самое необходимое:

  • общие настройки; (звуковые оповещения, интервалы обмена данными, варианты поведения формы) 
  • список типов заданий; (на него ориентируется интеграция)
  • инд. настройки; (вариант подключения сканера, настройки отображения и функицонала при вводе)

 

 

 

 

 

 

Переход к заданиям открывает диалог выбора.
Здесь можно воспользоваться поиском данных для задания в ИБ (И), создать вручную, открыть для ввода или выполнить над текущим заданием произвольное действие (И). 
(под это отведено два "слота")

 

 

 

 

 

 

 

 

Форма ввода имеет минималистичный вид,
но обладает достаточным функционалом: 

 

  • наименование задания и прогресс выполнения; 
  • показатели работы текущего пользователя; (количество, время, темп)
  • поле для ручного ввода; (особые сценарии, н-р добавление по артикулу)
  • просмотр изображения текущей позиции (И); (двойной клик или enter)
  • история ввода / отмена записи; (если есть доступ)
  • возможность видеть только то, что осталось; (очень удобно в конце инвентаризации)

 

 

 

За работой потоков можно наблюдать в отдельном диалоге.
Там же небольшой функционал по их управлению..

 

 

     

     

     

     

     

     

     

    Выполненные задания помещаются в архив. 
    С этого момента они доступны администратору для анализа.

    Прежде всего это суммовые показатели и их динамика по срезам:

    • периодичность; (группировка по годам, месяцам, неделям, дням, часам)
    • тип задания; (если дело вышло за рамки инвентаризации)
    • задание; 
    • пользователь;

    В дополнение к ним можно вывести несколько видов гистограмм.

     

     

     

     

     

     

     

     

    На программном уровне процесс обработки задания выглядит так:

    • через поиск (И) или вручную создается задание и записывается в сетевую папку по средствам json-сериализации;
    • после происходит обработка задания; (текущий результат записывается в сетевую папку)
    • в процессе выполнения активно задействована интеграция (И):
      • обработчик входящих данных; (сколь угодно сложная функция, конечная цель которой — обновление данных)
      • обработчик получения изображения; (опционально, для текущей позиции)
    • результат задания переносится в базу данных (И); (отдельный обработчик)
    • опционально выполняются доп. действия (И); (выполнение произвольного кода, как на клиенте, так и на сервере)
    • выполненное задание помещается в архив;

     

    Синхронизация потоков в задании осуществляется по следующему принципу:

    • чтение новых записанных данных из сетевого каталога; (все что записано всеми потоками считается корректным)
    • текущие незаписанные данные проверяются на корректность; (запись может быть дублирующей или избыточной)
    • если данные корректные — идет запись в итоговый результат, иначе — звуковое сообщение с просьбой удалить лишнее;

     

    Реализовано три варианта работы со сканером штрихкодов:

    • режим эмуляции клавиатуры; (классика, старые win-тсд)
    • подключаемое оборудование; (стандартная подсистема, native-компонента, стациональные ПК)
    • передача кодов по сети через TCP; (интересный вариант, применяем на android-тсд)

    ЗАКЛЮЧЕНИЕ

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

     

    Спасибо за внимание! 

     

    has been added to your cart:
    Оформление заказа