|   |   | 
| 
 | Проверка вводимого штрихкода не проходит в случае если контрольная цифра 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,"Проверка" | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |