|
Проверка вводимого штрихкода не проходит в случае если контрольная цифра 0 | ☑ | ||
---|---|---|---|---|
0
palpetrovich
31.01.14
✎
12:50
|
Проверку делаю по схеме
1. Сложить все цифры, которые стоят на четных местах: 2. Полученную сумму умножить на 3: 3. Сложить все цифры, которые стоят на нечетных местах, без контрольной цифры: 4. Сложить числа, полученные в пунктах 2 и 3: 5. От полученной суммы отбросить десятки: получим 2, 6. Из 10 вычесть полученное в пункте 5 число: Сформированный 1с штрихкод 2000007093010 проверку не проходит ...я где-о неправ? |
|||
1
palpetrovich
31.01.14
✎
12:51
|
* в (0) "получим 2," - не читать :)
|
|||
2
NS
31.01.14
✎
12:54
|
(0) Какую проверку не проходит?
|
|||
3
NS
31.01.14
✎
12:57
|
http://www.labeltest.com/scodes.html
Проходит проверку. Штрих-код подлинный, контрольный знак верный. |
|||
4
palpetrovich
31.01.14
✎
12:59
|
(3) да, онлайн проверку проходит, не прохдит в 1с - по алгоритму из (0) ...да и если "ручками" посчитать по этому алгоритму - тоже не проходит
|
|||
5
Ненавижу 1С
гуру
31.01.14
✎
13:02
|
(4) если ручками посчитать, то проходит вообще-то
|
|||
6
palpetrovich
31.01.14
✎
13:10
|
(5) хм, где у меня прокол?
2000007093010 СуммаЧетных = 4 СуммаЧетных = 18 4*3+18=30 отбросить десятки = 0 10 - 0 = 10 10!=0 |
|||
7
Torquader
31.01.14
✎
13:11
|
Наверное, цифры на нечётных чётных местах, исключая саму контрольную цифру ?
|
|||
8
palpetrovich
31.01.14
✎
13:14
|
+(6) может в п.6 надо срвнивать только последнюю цифру? ...редкость конечно,но могли-бы и упомнуть в алгоритме
|
|||
9
Torquader
31.01.14
✎
13:19
|
(8) Ну, если строго, то 10-0=10, но циФра 0 (единицу тоже отбросить).
|
|||
10
palpetrovich
31.01.14
✎
13:21
|
(9) наверное, просто в том алгоритме, который мне попался на просторах интернета это не описано :)
всем спасибо |
|||
11
Torquader
31.01.14
✎
13:23
|
(10) В каком-то иностранном алгоритме упоминалось что-то типа "комплементарная до 0 цифра", что более подходит по смыслу.
|
|||
12
Torquader
31.01.14
✎
13:25
|
||||
13
NS
31.01.14
✎
13:26
|
(10) Ты подумал что последней ЦИФРОЙ должно быть 10?
Нет такой цифры :) |
|||
14
Torquader
31.01.14
✎
13:26
|
Function TestBarCode(ByRef b)
Dim l l=Len(b) If l<>13 Then ' длина у нас должна быть 13 символов TestBarCode="Неверная длина:" & CStr(l) Exit Function End If r=0 For l=1 To 11 Step 2 k=Asc(Mid(b,l,1)) If(k>=48)AND(k<=57)Then k=k-48 Else ' если не цифра, то априори неверно TestBarCode="Неверный символ:" & Chr(k) Exit Function End If r=r+k k=Asc(Mid(b,l+1,1)) If(k>=48)AND(k<=57)Then k=k-48 Else TestBarCode="Неверный символ:" & Chr(k) Exit Function End If r=r+(k*3) Next r=(10-(r Mod 10))Mod 10 k=Asc(Mid(b,13,1)) If(k>=48)AND(k<=57)Then k=k-48 Else ' контрольная цифра - тоже цифра TestBarCode="Неверный символ:" & Chr(k) Exit Function End If If k=r Then TestBarCode=True Else TestBarCode="Неверная цифра:" & CStr(k) & " вместо " & CStr(r) End Function s="2000007093010" MsgBox s & "=>" & CStr(TestBarCode(s)),0,"Проверка" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |