Объекты малого бизнеса в России

Вновь об автоматизации инвентаризации

До Амазона, с его роботами, мы конечно пока не доросли, но, тем не менее, инвентаризацию товаров как то надо проводить. Вот если бы каждый товар можно было бы однозначно идентифицировать! И тут не пришлось изобретать ни одного велосипеда. Каждая единица товара однозначно идентифицирует себя с помощью штрихкода. Этого более чем достаточно для автоматизации сбора информации. В этой статье я попробую изложить мой опыт внедрения технологии инвентаризации с помощью терминала сбора данных. 

Исходные данные

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

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

  • Сканирование линейных штрихкодов (обычно всех возможных форматов, а так же инвертированных по цвету и зеркальных)
  • Распознавание двухмерных штрихкодов
  • Чтение радио-меток

Но, так же, есть ряд других характеристик, на которые стоит обратить внимание:

  • Характеристики экрана (влияет на количество и качество выводимой пользователю информации)
  • Время автономной работы (будет неприятно прервать инвентаризацию из-за севшего аккумулятора)
  • Объем памяти (количество записей БД, которые терминал может собрать перед передачей)
  • Возможности связи (через док-станцию, по bluetooth или wi-fi)
  • Защищенность от внешнего воздействия (ударопрочность, термостойкость — актуально для пыльных складов или холодильных установок)
  • Цена

Так как изначально требовалось только попробовать инвентаризацию такими устройствами, и если окажется удобным — будут выделены деньги на массовое внедрение во всех подразделениях, то важнейшим критерием я выбрал низкую цену. В результате поисков и сравнений я выбрал CipherLab 8001L. 

Интеграция

Для ведения учета в компании используется «1С: Предприятие 8. Управление Производственным Предприятием» (УПП). Поэтому для меня был важен вопрос интеграции с нашей системой этого устройства. К счастью терминал оказался в списке официально поддерживаемых устройств. По задумке это должно означать что мы скачиваем и ставим драйвер, обработку 1С и начинаем работать, но меня такая работа не устроила. 

Естественно оборудование можно интегрировать в любую систему учета. Самый простой способ — использовать файлы заданного формата для обмена между терминалом и системой. Но компонента, написанная для 1С, поддерживает работу с терминалом напрямую. В качестве базы я использовал ПО от ScanCode — официального представителя CipherLab в России, т.к. куплен терминал был у партнера компании и имел соответствующую лицензию на прошивку. В целом продавец не сильно имеет значение, ведь все прошивки похожи друг на друга и имеют сходные генераторы приложений. На примере данной статьи можно разобраться и с другими прошивками. Подробнее о прошивках и приложениях для ТСД написано чуть ниже. Для внедрения в работу терминала потребуется скачать со страницы разработчика:

  • Драйвер док-станции терминала
  • Прошивку и генератор приложений
  • Компоненту и обработку для 1С

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

Драйвер док-станции ставится как обычное устройство, после этого подключенный по USB кредл должен нормально определится и появится в оборудовании в виде COM-порта. Нам надо будет запомнить номер этого порта:

Если вы желаете просто начать работать, то все что осталось — это установить компоненту для 1С и подключить обработку. Компонента устанавливается как обыкновенное ПО, а обработка подключается в через справочник торгового оборудования. На примере УПП это будет выглядеть так:

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

Иногда библиотека cipherlab.dll не регистрируется должным образом, поэтому можно вручную зарегистрировать ее в системе командой:

regsvr32 [путь_до_файла]\cipherlab.dll

Создается строка в справочнике «Торговое оборудование»:

На что следует еще обратить внимание, так это настройка терминала:

Тут необходимо указать COM-порт который мы запомнили выше при установке ИК-подставки, некоторые специфичные параметры, которые можно оставить и по умолчанию и два формата — БД и Файла для обмена с ТСД. Формат БД — зависит от ваших потребностей, актуального для статьи скриншота не осталось, а вот пример формата файла привожу:

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

Анализ и доработка

После долгого общения с сотрудниками разного уровня и разных должностей выстроилась следующая цепь действий для удобного проведения инвентаризации:

Рассмотрим по пунктам, что надо в этом процессе автоматизировать:

Создание документа

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

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

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

Итак, тут я выбрал второй вариант, появился этап выгрузки данных в терминал и мне было необходимо написать обработку, которая бы это делала. Заполнение же документа учетными остатками делается стандартной функцией: «Заполнить» → «Заполнить по остаткам на складе (Упр. учет)».