Главная » Хабрахабр » Волшебный штрихкод

Волшебный штрихкод

Рустам подошел к Стасу, передал ему пачку бумаг – грязных, в масле, с помятыми уголками и какими-то пометками.

– спросил Сергей, заглядывая через плечо Рустама. — Что за макулатура?

– обиделся Рустам. — Сам ты макулатура. – Накладная это, на сборку.

– спросил Сергей. — А нам ты ее зачем принес?

– Даша опять чего-то намудрила, надо разбираться. — Да вон… — махнул рукой Рустам.

– Даша была родом из деревни, что было видно невооруженным взглядом. — Чего я намудрила, чё ты гонишь? – Мне сказали, я сделала! Да она и не скрывала.

– удивился Сергей. — Кто тебе что сказал? – Что тут вообще происходит?

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

– недоуменно спросил Сергей. — Нафига?

– с вызовом сказала Даша. — Надо, чё ты. – Я чего сделаю, если там минуса прут?

— Где какие минуса?

Одна позиция, а лежит на разных счетах. — В оборотке, где еще. Вот и разбиваю – немного отсюда, немного оттуда.

– кивнул Сергей. — Ну, это нормально. – А Рустам чего тогда докопался?

– сказал Рустам. — Я не докопался, а задолбался! А во вторник захожу, а Даша говорит – возьми новую бумажку, там мы немного поменяли. – Мне дают в понедельник эту бумажку, с двумя сотнями позиций, я иду собирать. Печатает – мать честная, а там уже двести пятьдесят позиций!

– кивнул Сергей. — Ну, она только что объяснила. Общее количество и позиции остаются без изменения. – Разбивает позиции на несколько строк.

– возмутился Рустам. — А я-то почем знаю, с изменениями или нет? – Наменяют чего-то, а мы потом виноваты, не то положили, не туда утащили.

– прищурился Сергей. — Даша, а давай запретим тебе документы менять? – Чтобы Рустаму спокойнее было.

– Даша сделала руки в боки. — Щас! Меня главбух сожрет! – Я тебе запрещу!

– с доброй улыбкой сказал Рустам. — Я сам тебя сожру!

– с улыбкой ответила Даша. — Ну-ну, обещаешь только.

– тоже улыбнулся Сергей. — Так, друзья, валите отсюда, воркуйте под забором.

– ответил Рустам. — Ну щас, разберемся, и пойдем.

– Стас, все это время ковырявшийся в системе, повернулся к коллегам. — Все нормально. Работай дальше. – Я проверил.

– нахмурился Сергей. — А как ты проверил?

– с гордостью заявил Стас. — А у меня тут инструментик есть. Я там строчки сворачиваю – ну, чтобы убрать все эти разбиения – и общие количества проверяю. – Он старые версии документа достает, и сверяет с текущей. На, Рустам, забирай.

– заулыбался Рустам, взял бумажки и пошел к выходу. — О, спасибо, Стасяндра! Даша направилась следом.

– спросил Сергей, когда парочка закрыла за собой дверь. — И что, нормально это, по-твоему?

– нахмурился Стас. — Что именно?

— Чтобы люди к тебе бегали за этой сверкой?

– немного обиженно ответил Стас. — А какие варианты есть? – Я сначала их самих заставлял сверять, но это адская работа, сам посуди – у нас, обычно, бумажки длинные, на несколько листов, потому что позиций много за раз перемещают, для сборки одной единицы оборудования.

— Ну да, это точно не вариант… — кивнул Сергей.

Потом думаю – о, есть же версии! — Ну вот, и я так подумал. Ну и написал этот инструментик, простенький. Пусть версии сравниваются! Только…

— Только что?

— Ну…Не всегда он помогает.

— Почему?

Во-вторых, версий бывает очень много, и тогда хрен поймешь, какую с какой сравнивать. — Во-первых, не всегда я на месте есть. Да еще и непонятно, с какой именно версии они распечатали – т.е., что считать оригиналом.

Ну, типа, распечатано второго октября в двенадцать часов. — Может, на бумажке выводить какую-то информацию об оригинале и версии?

Это ж какой геморрой – надо во все виды бумажек эту фигню выводить. — Я думал об этом, но не стал пока делать.

– недоумевал Сергей. — Почему?

Некоторые бумажки еще и унифицированные, в смысле по государственному стандарту печатаются, там нельзя всякую фигню выводить, типа даты распечатки. — Ну как… На перемещение – одна форма бумажки, на отгрузку – другая, на передачу в производство – третья, и так далее.

— А, ну да… И что?

– пожал плечами Стас. — Что-то, не знаю я. – Вот так и мучаемся.

– Надо что-то придумать… — Не, так не годится… — задумчиво сказал Сергей.

– чуть повысил тон Стас. — Да пробовали мы, разные варианты. Терминалы сбора данных, например. – Еще до тебя пробовали.

– подхватил Сергей. — Во, кстати, отличная ведь идея! Сделал бухгалтер документ – он сразу у кладовщика появился! – Никаких бумажек, и связь с системой прямая.

– покачал головой Стас. — Не, неудобно и дорого.

Давай объясняй. — Почему?

– начал Стас. — Во-первых, дорого. Обычный ТСД, с маленьким экранчиком – не годится, хотя он и не дорогой. – Сам посуди.

— Почему не годится?

– улыбнулся Стас. — Ну ты попробуй сам с таким экранчиком пособирать две сотни позиций. Здесь он реально только мешать и бесить будет. – ТСД для другого нужен – для розницы, там. Другое дело – планшет.

– снова подхватил Сергей. — Ну вот, заработала мысль!

– улыбнулся Стас. — Заработала и отработала. Мы брали один, на пробу – бешеных денег стоит. – Это реально дорого, потому что планшет нужен защищенный.

– нахмурился Сергей. — Нафига защищенный? – У нас же обычные условия, не жарко, не мокро.

Видел, в каком состоянии бумажки? — Ну как… Мокро.

— Грязные.

Потому что у нас, повторюсь, не розница. — Да. Руки постоянно грязные. Детали без упаковки, зато – в смазке.

— Перчатки может выдать?

– улыбнулся Стас. — В перчатках планшетом пользоваться не получится, ты чего? Да и неудобно. – Да и все равно промокают они, от масла, или чем там детали смазывают… Не годится, короче.

— Чего неудобно?

На бумажке же как: взял позицию, положил в ящик – ручкой галочку поставил. — С планшетом неудобно. Бумажек можно с собой несколько таскать. Взял меньше – поставил количество, ручкой опять же. Не надо ничего искать там в компьютере, листать, материться. Одну – в один карман, другую – в другой. Опять же, бумажку удобно в ящик с деталями положить. Собираешь один заказ, принесли другой, более срочный – убрал бумажку в карман, и спокойно пошел дальше.

— Это зачем?

Подходит кладовщик к ящику, берет бумажку, и доделывает – собирает то, что осталось. — Ну как… Один кладовщик собирал, смена закончилась, выходит вторая. Бумажку – хоть в зубы бери, хоть…

– нахмурился Сергей. — Я понял.

— Ну вот…

– вдруг осенило Сергея. — А ты откуда так все детально знаешь, про бумажки?

– сказал Стас. — Так я с ними сколько провозился тогда. Вот и понимаю теперь, что у них там и как. – Прям сам пробовал эти ящики собирать.

Допустим, оставляем бумажки. — Ладно, ну делать-то что-то надо? Как сверить бумажку и систему?

— Распознавать, наверное, надо…

– покачал головой Сергей. — Не, это вообще дебилизм. Во-вторых, формат разный – ты сам говорил. – Во-первых, бумажек несколько, на одну накладную. Тут на полгода работы хватит, чтобы их распознать, да еще потом и сопоставлять.

— Ну да… — задумчиво сказал Стас.

— Какие еще варианты есть?

– вдруг сказал Стас. — Может, нам унифицировать бумажки? – Ну, для внутреннего пользования.

Как? — В смысле? Разве можно заменить типовую форму, принятую в каком-нибудь законе?

Смотри сам. — Нет, ты не понял. – спросил Сергей. Вот у него сейчас какая накладная была?

— На перемещение вроде…

— Типовая форма?

— Ну да, какая-то типовая.

Когда перемещение свершится? — И что с ней потом будет?

— В бухгалтерию сдаст, на хранение, наверное.

Грязную, помятую? — В таком виде?

— Нет, наверное… А как тогда?

Там же есть подпись? — Я думаю, они ее перепечатают, и он ее подпишет.

— Да, отправитель и получатель.

– кивнул Сергей. — Ну вот, оба и подпишут. Тем более, что она содержит ненужную информацию, а нужной – не содержит. – А раз ее перепечатают, то нафига в первый раз была типовая форма?

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

Я и говорю! — Ну! – Давай сделаем универсальную бумажку! – Сергей начал воодушевляться. Складские операции в смысле. Они ведь чем отличаются? Надо что-то взять и куда-от отнести, правильно?

— Ну, так… — кивнул Стас.

— Или со склада на склад, или – со склада в цех, или – со склада в автомобиль, или – наоборот, когда приход.

— А комплектация?

– удивился Сергей. — А что комплектация? – А, да… Там же из четырех деталек собирают одну?

— Да.

Везде будет одна таблица товаров, а для комплектации – другая. — Ну ладно, будет одна бумажка немного от других отличаться. А главное – мы там ничего лишнего выводить не будем, и место для пометок им оставим!

– вспомнил Стас. — Кстати, может, тогда и номер версии вывести? – Ну, чтобы сверять-то…

Молодец, Стас! — Точно! – заулыбался Сергей.

– гордо ответил Стас. — Стараюсь!

— Единственное… — по лицу Сергея мелькнула тень.

— Ну что опять… — скис Стас.

— Версии я не люблю, им нельзя доверять…

– уныло спросил Стас. — Почему?

— Мы их чистим периодически.

– Они ж места много занимают… — А, да… — сокрушенно покивал головой Стас.

– Сергей задумчиво вертел в руках смартфон. — Да и тяжеловатый способ какой-то получается. Надо что-то попроще выбрать… – Версии-то сравнивать.

— Какой-то бы другой признак, идентификатор найти…

– с надеждой спросил Стас. — Типа штрихкода?

— Ну да, типа штрихкода… Ну, чтобы…Как объяснить-то…

— Да я понял.

— Что ты понял?

— Чтобы этот штрихкод, или какой-то другой идентификатор, однозначно определял эту бумажку.

– покачал головой Сергей. — Не, ты не понял. Вот ты когда вручную сверял, какую информацию использовал? – Однозначно определить бумажку может ее номер, тут и штрихкод не нужен. То есть, что именно проверял?

— Так… Дату документа проверял – ну, чтобы день тот же самый был, а внутри дня пусть двигают, как хотят…

– заинтересовался Сергей. — Так, еще что?

— Еще отправителя и получателя…

— Да, это понятно, дальше что?

Ну, чтобы дублирующихся строк не было. — Номенклатуру и количество, после свертки таблицы.

Считаем. — Ну вот. – Дата, отправитель, получатель, таблица с номенклатурой и количеством. – Сергей стал загибать пальцы. Остальное, с точки зрения складского учета – чушь. Это – суть документа, его ключевые поля.

— Это ты про что?

Договоры всякие, счета учета, комментарии, заказы и т.д. — Там полно полей еще, особенно в отгрузке. С точки зрения склада все это – чушь. – вся аналитика, нужная для управленческого, бухгалтерского учета, CRM и т.д.

– немного пристыженно закивал Стас. — А, понял, понял.

Ну, чтобы по какому-то признаку, что ли, раз! — Так вот, как-то бы вот все эти поля, нужные нам идентифицировать, понимаешь? Вот этот, наш, складской состав. – и проверить состав документа. Понимаешь?

Только не понимаю, как это сделать. — Да, понимаю. – С версией я понимаю. – покачал головой Стас. А как такую информацию на бумажке хранить? Я там, в принципе, то же самое и делаю. Хранить на бумажке, сверять с программой? Ты же этого хочешь?

Может, все-таки штрихкод? — Да.

— Штрихкод документа?

– замотал головой Сергей. — Ну да… Хотя… Нет. Он же сам по себе живет, и никакой полезной информации в себе не содержит. – Не подойдет штрихкод.

Как? — Почему? – удивился Стас.

Один документ – один штрихкод. — Ну ты просто присваиваешь документам штрихкоды, по порядку, и все. Это, как длинный номер, или второй номер, не знаю… Просто пригодный для сканирования. Меняешь документ – штрихкод не меняется. Все. Пикаешь, программа ищет его, и определяет, какой документ отсканировали.

– Я с розницей несколько раз работал, будет он мне про штрихкоды рассказывать… — Ну ты мне рассказывай… — махнул рукой Стас.

– ухмыльнулся Сергей. — Ну давай, просвети меня, умник.

– с улыбкой произнес Стас фразу из старого анекдота про студентов. — Ща, докурим и сдадим. – Слышал про плушки?

Я очень любить русский язык и много говорить на он? — Плушки?

— Ой деревня… Ты фрукты в супермаркете покупаешь?

— Ну да, конечно.

Заметь, по штрихкоду. — Тебя никогда не удивляло, что на кассе твои бананы нормально пробиваются, с определением веса, цены и т.д.?

– Они что, хранят эти штрихкоды? — Да, а что тут… Погоди… — задумался Сергей. И потом по штрихкоду ищут мой результат взвешивания? После каждого взвешивания запоминают результат в базе?

Шибко умная. — Ну, я говорю, деревня. – Там все намного проще. – засмеялся Стас. Вся информация, необходимая для продажи, содержится в самом штрихкоде.

– удивился Сергей. — То есть как?

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

Потом вдруг стал картинно кричать. — Да, что-то припоминаю такое… — пробормотал Сергей. Какой плу на яблоко роял гала? – Галя!

– кивнул Стас. — Ну да, оно и есть. Но там и штрихкод, как таковой, не возникает. – Это где весов в зале нет, там кассир должен плушку знать, потому что сам взвешивает.

– заинтересованно спросил Сергей. — Про плушку понял, дальше что?

– махнул рукой Стас. — Дальше вес и цена, вроде, но это уже не суть. – Я ж тебе к тому рассказал, что в штрихкод можно засовывать любую информацию, особенно в сто двадцать восьмой.

— Какой?

Блин, какой ты тупой, а? — Ну они же разные есть, штрихкоды-то. – улыбнулся Стас.

– не стал отвлекаться Сергей. — Давай рассказывай.

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

– округлил глаза Сергей. — Буквы? – Серьезно?

— Ну.

– улыбался Сергей. — Блин, это ж кайф! Мы можем весь состав документа – ну, те поля, что я перечислил – загнать в одну длинную строку, как в стек, и закодировать в штрихкод! – Тогда все на свои места встает! А потом – быстро сверять!

Такую и сканер может не взять, обычный. — Ну, не знаю…Представь, двести позиций, по каждой надо, хотя бы, код номенклатуры, количество… Очень длинная строка получится. Широкий какой-то нужен, я не знаю…

– скис Сергей. — И что, как быть-то? – Давай, умник, гений штрихкодирования, подсказывай.

— Ее бы как-то заархивировать, что ли, не знаю…

– Точно, хорошо что ты про архиватор заговорил! — Погоди… — в голову Сергея пришла какая-то мысль. Контрольную сумму надо вычислять!

— Чего?

– улыбнулся Сергей. — Да не тупи, Стас. Она там по разным алгоритмам вычисляется, это не важно. – Ну, контрольная сумма, по длинной строке. Важно, что она – короткая, понимаешь?

— Нет.

И она всегда однозначно идентифицирует эту строку! — Ну строка – длинная, хоть километр, а контрольная сумма – короткая, всегда короткая. Она скажет главное – изменился документ или нет! Точнее, не саму строку, а нам это и не надо.

– Ты будешь вычислять контрольную сумму документа, сохранять ее, а при печати – выводить в виде штрихкода прямо на бумажку? — Начинаю понимать… — задумчиво сказал Стас.

— Да!

— А дальше?

– и говоришь – все, валите, ничего не изменилось. — А дальше они к тебе придут со своими бумажками грязномазыми, а ты сканером пик! А если не нашла – значит, документ поменялся. Система сама сходит, поищет эту контрольную сумму, и если нашла – значит, все хорошо. Тогда подойдет твой тяжелый алгоритм, с версиями.

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

Тогда и бегать к тебе им не надо, в общем-то… Дашь ей сканер, дешманский какой-нибудь, и пусть себе пикает. — Ну. Или даже Рустаму дашь сканер, жалко что ли.

– Прям решение классное, мне нравится. — Клево, слушай… — мечтательно сказал Стас. Это, типа, такое умное версионирование, с быстрым откликом и определением ключевых отличий. Главное – не будет реагировать на изменения, не связанные со складом.

– кивнул Сергей. — Ага, но самое интересное в другом. – В том, что мы с тобой придумали, как быстро сверить бумажку с программой.

Это важно? — А что?

В нашем проекте по складу. — Безмерно.

Оглавление


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[recovery mode] .NET гуру Дино Эспозито: «Не будь пассажиром поезда, идущего под откос»

Дино приезжал в Минск лишь однажды, и нам удалось пообщаться с ним между лекциями, которые он давал для .Net-чиков. Мы решили не быть банальными и поговорили с Дино не только о работе, но и о книгах, о будущем и о ...

Рассылай и властвуй: инструменты для создания и тестирования рассылки

Верстать и тестировать адаптивные письма с интерактивом (например, с формами и слайдерами) — боль в квадрате. Верстать электронные письма — это боль. В статье расскажу об email-фреймворках — MJML и Foundation for Emails — и моих любимых ресурсах для тестирования ...