|
|
|
формат данных для штрихкода
|
|||
|---|---|---|---|
|
#18+
В системе есть разнообразные объекты. Для каждого экземпляра объекта имеется уникальный (в пределах всей системы) ID::INT8, по которому может быть установлен его тип. Для некоторых объектов: коробки с товаром, стеллажи, ячейки хранения и пр. хотелось бы генерить уникальные же штрихкоды. Совместимость данных в ШК с какими-либо системами (EAN etc) не важна. Прямое решение - генерить ШК в виде текстовой строки, в которой написан его ID::INT8 и кодировать, к примеру CODE39. Уникальность ID уже реализована сопутствующей логикой при создании объекта. Одно "НО". Хотелось бы в контексте интерфейса пользователя проверять формальную валидность считанного ШК. Например, для "закрытия" коробки с товаром нужно считать ШК коробки, а не ШК накладной, складской ячейки или пачки сигарет. Чтобы проверить, что это действительно коробка, нам придется делать запрос к БД, что явно недешовое решение. Особенно если задумчивый кладовщик будет с наслаждением тыкать сканером в посторонний предмет раз в секунду. Усложненное решение - генерить ШК в виде строки с префиксом, однозначно связанным с типом объекта. Например "box" & [boxid], "shelvse" & [shelvseid]. ШК можно хранить не в дереве объектов, а в таблице из предметной области (коробки, ячейки и пр.). Так мы получаем возможность проверять пользовательский ввод в интерфейсе, отсекая явно ложные операции. Минус - придется делать поиск уже не по INT8, а по текстовой строке. Какой подход окажется лучше с точки зрения быстродействия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 13:22 |
|
||
|
формат данных для штрихкода
|
|||
|---|---|---|---|
|
#18+
tadminМинус - придется делать поиск уже не по INT8, а по текстовой строке. Сделайте префиксы числовыми (это улучшает качество печатаемого ШК) и фиксированной длины. Тогда восстановить по ШК INT8 не составит труда. И поиск будет идти все также быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 14:12 |
|
||
|
формат данных для штрихкода
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey Сделайте префиксы числовыми (это улучшает качество печатаемого ШК) и фиксированной длины. Тогда восстановить по ШК INT8 не составит труда. И поиск будет идти все также быстро. Т.е. 1) ШК текстовый, типа [prefix]::INT4 & "-" & [objectID]::INT8, типа вот так "1001-123456789012345678" 2) клиентское приложение выделяет из строки [prefix] и [objectID] 3) по префиксу делает предварительную проверку 4) select к БД делаем уже по [objectID]::INT8 Спасибо, действительно удобный вариант! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 15:44 |
|
||
|
формат данных для штрихкода
|
|||
|---|---|---|---|
|
#18+
tadmin Т.е. 1) ШК текстовый, типа [prefix]::INT4 & "-" & [objectID]::INT8, типа вот так "1001-123456789012345678" Спасибо, действительно удобный вариант! В общем да, только я бы еще минусик убрал. Типа такого: 1001123456789012345678. Ведь длина префикса все-равно фиксирована. А ели под штрих-кодом надо напечатать человекочитаемый код, то там можно и минусик изобразить. Ну и пара замечаний: а) некоторые типы кодов умеют хорошо представлять числовые коды, имеющие четное количество символов. То есть имеет смысл стремиться к чисто числовому код четной длины. б) Я тут уже где-то писал - повторю. Штрих коды начинающиеся с двойки зарезервированы для внутреннего использования компаниями. Поэтому начинайте префикс с двойки. В этом случае вы легко отловите "задумчивого кладовщика", который вместо стеллажа сканирует штрих-код с недопитой бутылки водки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 16:13 |
|
||
|
формат данных для штрихкода
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey б) Я тут уже где-то писал - повторю. Штрих коды начинающиеся с двойки зарезервированы для внутреннего использования компаниями. Поэтому начинайте префикс с двойки. В этом случае вы легко отловите "задумчивого кладовщика", который вместо стеллажа сканирует штрих-код с недопитой бутылки водки. Как я понимаю, под это определение попадают логистические коды для транспортной упаковки ITF-14. Они могут начинаются с "2". Не стоит ли построить строку с простой контрольной суммой (типа md4), которой дополнять свой код? Это минимизирует коллизии с целочисленными кодами ITF-14 от транспортных компаний. Следовало бы, конечно, скататься на склад и посканировать все коды, которые наносят поставщики и перевозчики на наш груз, но хочется предусмотреть и "теоретичекую сторону задачи". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 19:23 |
|
||
|
формат данных для штрихкода
|
|||
|---|---|---|---|
|
#18+
Кстати, если мой числовой префикс совпадет с каким то префиксом ITF-14 (и EAN внутри), то у меня возникнет коллизия с целым диапазоном номеров! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 19:29 |
|
||
|
формат данных для штрихкода
|
|||
|---|---|---|---|
|
#18+
tadminКак я понимаю, под это определение попадают логистические коды для транспортной упаковки ITF-14. Они могут начинаются с "2". Да, я действительно не совсем точно выразился. С двойки не должна начинаться "производственная" маркировка. Учитывая, что между производителем и потребителем стоит много посредников, каждый из которых норовит свою "внутреннюю" (естественно никто эти внутренние этикетки потом не срывает) маркировку сделать, то шанс нарваться на двойку выше. Единственное утешение - логистические коды обычно наносятся именно на внешнюю упаковку (короба, контейнеры и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 09:16 |
|
||
|
формат данных для штрихкода
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey то шанс нарваться на двойку выше. Вот именно этого то я и боюсь. Самое противное, что если чей-то EAN (начиная со второй цифры после двойки), или внутренний код совпадет с моим префиксом, то я получу целый диапазон коллизий! Хочется ввести что-то случайное (hash) в штрих=код, чтобы я всегда мог его вычислить и проверить, нашей ли системой сгенерен код. Но, 19 десятичных разрядов на INT8 3 десятичных разряд на префикс Для контрольной суммы вообще места не остается. Очень длинный код получается. Можно делать текстовый код и выгонять в его в шестнадцатиричке с битом четности, ловить ошибки преобразования. Или ну его нафиг. Как вы думаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 18:13 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=124&tid=1544691]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 357ms |

| 0 / 0 |
