Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
Ш+К
Guest
Доброго дня всем.
В моем чудесном решении не было предусмотрено одного интересного момента - наличия штрихкода с двумя контрольными цифрами.
До сих пор все было красиво и прекрасно - либо нормальный EAN13, либо с закодированным весом. У обоих контрольная сумма в последнем разряде.
Этот же весовой штрикод - тоже весовой, но контрольный разряд еще и в 5 или 6 цифре от начала, что интересно и он тоже вычисляется на основании веса.
И как теперь быть?

Ранее интерпретировал так: если штрихкод из 22-23 группы, то весовой, первая часть - код товара, вторая - вес.
Все остальные штрихкоды - полностью код товара.

А этот?
Выглядит так:
22123X0123456
И вместо Х может быть что угодно
Конкретно сейчас в базу добавил 10 строк
221230
....
221239

Но как-то некрасиво и как производить анализ, если 221240 вполне может быть обычным весовым товаром?

Спасибо.
21 авг 18, 13:56    [21649503]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
L_argo
Member

Откуда:
Сообщений: 280
А кто генерит эти ШК ?
Какой-то сторонний продукт у поставщика товаров с ШК ?

Нужно просто иметь настройки где начинается/кончается код товара и где вес.
А также следует учесть, что на весах еще есть возможность передавать вес не до 10кг (1 разряд на КГ), а до 100, т.е. 2 разряда на КГ.

зы: помница на оптовой базе вдруг увидели огромный спрос покупателей на сосиски. Таскали мешками. Оказалось, покупатели выяснили, что взвешивая 12кг на весах, весы выдадут ШК с 2 кг.
Т.к. потоки товаров и сумм на оптовой базе большие, кассиры часто этого не замечают.
Пришлось установить ШК на 2 разряда КГ.
Благо была возможность регулировать парсинг ШК на POS.
21 авг 18, 15:30    [21649667]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3527
Ш+К
В моем чудесном решении не было предусмотрено одного интересного момента - наличия штрихкода с двумя контрольными цифрами.
А надо предусматривать.
Шаблоны принимаемых штрихкодов в настройку выносить.
21 авг 18, 15:31    [21649668]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
Ш+К
Guest
Вот в том и вопрос, как мне построить логику, если
236470X001001, товар 6470X0, 100 грамм
2311011012202, товар 110110, 1220 грамм
2311012011203, товар 110120, 1120 грамм
среди вышеуказанных товаров с префиксом 23 (т.е. весовой товар) имеется один с контрольной суммой (разряд помечен X)?
Получается на момент сканирования я уже должен знать, а не с двумя ли цифрами контрольными данный штрихкод :-)...

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

Спасибо.
22 авг 18, 14:08    [21650759]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
x1ca4064
Member

Откуда:
Сообщений: 902
Ш+К
Вот в том и вопрос, как мне построить логику, если
236470X001001, товар 6470X0, 100 грамм


А в БД у товара какой ШК?
22 авг 18, 14:16    [21650770]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3651
Получить список кодов (список продукции/производителя), которые используют данный формат и дальше обрабатывать в зависимости от того, есть там второй разряд или нет.
22 авг 18, 14:49    [21650815]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
L_argo
Member

Откуда:
Сообщений: 280
Можно наверное организовать поиск по маске и исключать этот разряд, но зачем это делать для всех 10000 строк при наличии одной такой единственной "хитрожопой" строки...
Этот Х - чья-то дурацкая самодеятельность. :)

Сколько у вас таких товаров ?

Самый простой выход уже сделан - вывести все комбинации этого Х.
22 авг 18, 17:53    [21651114]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3527
x1ca4064
А в БД у товара какой ШК?
У него нет штрихкода. Или скорее всего нет.

Вообще, этот штрихкод наверняка генерируют весы. Обычно формат штрихкода в весах настраивается.
22 авг 18, 20:06    [21651213]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
x1ca4064
Member

Откуда:
Сообщений: 902
YuRock
У него нет штрихкода. Или скорее всего нет.[/quit]

Вообще, этот штрихкод наверняка генерируют весы. Обычно формат штрихкода в весах настраивается.


Да, я понимаю, сформулировал криво, интересовал внутренний код в БД. В весах, обычно, настроиваются кол-во цифр для кода товара и веса, либо стоимости. Непонятной дополнительной контрольной цифры никогда не встречал, да и сомневаюсь, что это контрольная цифра. Нужно больше данных от ТС.
22 авг 18, 21:32    [21651254]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3527
x1ca4064
Непонятной дополнительной контрольной цифры никогда не встречал

Та чё, бывает. Если выбран формат ean13 - по любому будет сама в конце. Могут, и еще как-нибудь извернуться - кто знает этих программистов весов.
23 авг 18, 12:12    [21651835]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
L_argo
Member

Откуда:
Сообщений: 280
Возможно проблема в утилите, кот. формирует коды для закачки в весы.
23 авг 18, 14:02    [21652055]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
Ш+К
Guest
Возможно кому-то пригодится
Штрих код с двумя контрольными цифрами
281556X100150X2
Контрольную сумму X2 итак понятно как посчитать
На Делфи пока не портировал, но код вычисления X1 ниже

dim two, plus5, minus5, weight(4), znach, res, dif, res2, i
two = array(0,2,4,6,8,9,1,3,5,7) 'создаем массивы с исходными данными
plus5 = array(0,5,1,6,2,7,3,8,4,9)
minus5 = array(0,5,9,4,8,3,7,2,6,1)
for i = 1 to 5 'посимвольно записываем значение веса в массив, чтобы работать с каждым символом отдельно
weight(i-1) = Mid([pack.nominal;Dbc5,2;DecimalBarcodeFormatter],i,1)
next
znach = 0
'проверяем не пустой ли символ в массиве и потом в переменную znach складываем все значения из массивов
'в соответствии с алгоритмом
if weight(0) <> "" then znach = znach + plus5(cint(weight(0)))
if weight(1) <> "" then znach = znach + two(cint(weight(1)))
if weight(2) <> "" then znach = znach + minus5(cint(weight(2)))
if weight(3) <> "" then znach = znach + plus5(cint(weight(3)))
if weight(4) <> "" then znach = znach + two(cint(weight(4)))
' теперь определяем к какому десятку относится сумма
res = 0
dif = 0
if znach < 51 then res = 50
if znach < 41 then res = 40
if znach < 31 then res = 30
if znach < 21 then res = 20
if znach < 11 then res = 10
dif = res - znach ' разница между суммой и этим же десятком
' теперь ищем какому значению соответствует разница в массиве minus5
for i = 0 to 9
if dif = minus5(i) then
res2 = i
exit for
end if
next

Result = [pack.material.barcode] & cstr(res2) & [pack.nominal;Dbc5,2;DecimalBarcodeFormatter] 
6 сен 18, 21:15    [21667492]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1385
В таком штрихкоде главне - как называется этот стандарт. А потом уже вычисление контролек и т.п.
7 сен 18, 03:51    [21667592]     Ответить | Цитировать Сообщить модератору
 Re: Штрихкод с двумя контрольными цифрами (а по виду EAN13)  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3527
fraks
В таком штрихкоде главне - как называется этот стандарт. А потом уже вычисление контролек и т.п.
Та какой стандарт. Это кто-то придумал формат для себя, и всё. Я и посложнее придумывал - с 3-4 контрольными разрядами
7 сен 18, 11:10    [21667869]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить