helpf.pro
Регистрация

v8: Проверка штрихкода

papadge
13.11.2013 10:13Прочитано: 8508
Добрый день! Подскажите, пожалуйста- пользователи, при создании карточки номенклатуры, указывают штрихкод. Иногда они, или поставщики товара, ошибаются, ( к примеру, указывают неправильную контрольную цифру (пользуемся EAN13). Выскакивает сообщение, что некорректен штрихкод, но сохранять позволяет.
Отсюда выскочила проблема- в карточке товара заведен один штрихкод, при печати этикетки он печатается уже с корректной контр. цифрой. Хотелось бы пробежаться , тем же запросом из регистра сведений, по всем ШК и выяснить некорректные, с указанием номенклатуры. Как мне указать условие проверки? Спасибо.
Yandex
Возможно, вас также заинтересует
Реклама на портале
Jonsony
13.11.2013 11:21Ответ № 1
для начала, что за конфигурация
далее, что значит "неправильно указывают контрольную цифру)?
она вообще-то зависит от всех предыдущих цифр а коде (еан13 или еан8 или другой)

а это -"в карточке товара заведен один штрихкод, при печати этикетки он печатается уже с корректной контр. цифрой" вообще противоречит само себе.
печатается тот ШК что занесён, при печати контрольная цифра не подставляется, ибо она уже является частью ШК

а что там пробегаться? вывести список номенклатуры с указанием ШК и в экселе разобрать ШК на соответствие
или надо писать специально обработку, которая выбирает номенклатуру, выбирает к ней её ШК, разбирает цифры ШК по отдельности, затем по формуле проверяет соответствие контрольной цифры.

и вообще, что-то у вас неправильно поставлено в учёте и приёмке товара
у нас при приёме товара ШК с упаковки считывается в программу при первичном заполнении карточки товара или сравнивается имеющийся с поступившим (грешат иногда поставщики, перерегистрируя ШК на свой товар и не предупреждая)

http://strokescribe.com/ru/ean-13.html (в эксле кстати не так страшно можно сделать)
http://inetshop.in.ua/articles-review-1-30-print.htm

Код DOS Batch File
 Проверка штрих-кода
Последняя цифра — контрольное число, которое может быть посчитано, а правильность его нанесения проверена по следующему алгоритму:
1. Присваивают цифрам в штриховом коле места с 1-го ло 12-го, исключая контрольную цифру
2. Складывают цифры, находящиеся на четных местах, и полученную сумму умножают на 3. Например: 6 + 7 + 0 + 5 + 0 + + 1 = 19; 19x3 = 57;
3. Складывают цифры, находящиеся на нечетных местах. Например: 4+0+0+9+2+0= 15;
4. Складывают результаты, полученные в п. 2 и п. 3, и получают двух- или трехзначное число. Например: 15 +97 =112;
5. Оставляют у полученной итоговой суммы лишь число, находящееся на последнем месте. Например: 2;
6. Вычитают из 10 полученное число. Полученная разность и есть контрольное число, которое должно совпадать с тем, что указано в штриховом коде. Например: 10 — 2 = 8.
Jonsony
13.11.2013 11:23Ответ № 2
для 7.7 когда делал то там в карточке была кнопочка для генерации ШК на основании кода в справочнике (это для товара без ШК или для своего/весового товара), а ШК поставщика с упаковки просто считывался сканером в поле карточки
papadge
13.11.2013 12:29Ответ № 3
Менеджеры вручную вбивают в карточку товара ШК, на основе прайса поставщика, от этого и бывают ошибки. При приемке пользуются ТСД, которые нужны только для проверки накладных.

Если ШК нет, или нужен внутренний- конечно же пользуемся генерацией ШК.
Но проблема в том, что нужно проверить уже существующие в базе ШК (несколько десятков тысяч).

"а это -"в карточке товара заведен один штрихкод, при печати этикетки он печатается уже с корректной контр. цифрой" вообще противоречит само себе. " При печати ценников - да, выводится тот, который в карточке. При печати этикеток, по идее, идет проверка на правильность контр. цифры- отсюда и проблемы.
Jonsony
13.11.2013 14:15Ответ № 4
(3) papadge, ты так и не сказал конфу и платформу


вот я и говорю что у нас не руками а сканером вносили и вносим ШК в карточку товара

и если у вас есть прайсы поставщика то не проще загружать их в систему, для исключения ошибок в ШК?

PS
если не писать обработку - то вывести список номенклатуры со ШК в табличный документ, сохранить его в эксель и там проверить ШК по формуле
Изменено 13.11.13 14:18:37
Jonsony
13.11.2013 14:17Ответ № 5
вот пара кусочков рабочего кода для 7.7 (конфа не типовая):

проверка контрольной цифры при открытии карточки
Код 1C v 7.x
 	Если ПустоеЗначение(Штрихкод)=0 Тогда
Если СтрДлина(СокрЛП(Штрихкод))>13 Тогда
Штрихкод1=Лев(СокрЛП(Штрихкод),13);
КонецЕсли;

Форма.ГенерШК.Доступность(0);
Чис2=0;
Чис1=0;
Чис10=0;
Чис01=0;
Для ЧисХ=1 По 12 Цикл
Если (ЧисХ=2) ИЛИ (ЧисХ=4) ИЛИ (ЧисХ=6) ИЛИ (ЧисХ=8) ИЛИ (ЧисХ=10) ИЛИ (ЧисХ=12) Тогда
Чис10=Чис10+Число(Сред(Штрихкод1,ЧисХ,1));
КонецЕсли;

Если (ЧисХ=1) ИЛИ (ЧисХ=3) ИЛИ (ЧисХ=5) ИЛИ (ЧисХ=7) ИЛИ (ЧисХ=9) ИЛИ (ЧисХ=11) Тогда
Чис01=Чис01+Число(Сред(Штрихкод1,ЧисХ,1));
КонецЕсли;

КонецЦикла;
Чис1=Чис10*3;
Чис2=Чис1+Чис01;
Пока Чис2 >9 Цикл
Чис2=(Чис2-10);
КонецЦикла;
Если Чис2=0 Тогда
Чис2=Чис2;
Иначе
Чис2=(10-Чис2);
КонецЕсли;

Если Число(Сред(Штрихкод1,ЧисХ,1)) <> Число(Строка(Чис2)) Тогда
Предупреждение("ВНИМАНИЕ!!! Расчитанная контрольная сумма введённого шрихкода не совпадает с контрольной цифрой");
КонецЕсли;
КонецЕсли;


и генерация ШК (по кнопочек на форме) на основе кода из справочника
Код 1C v 7.x
 Процедура ГенерацияШтрихКода()
Чис2=0;
Чис1=0;
Чис10=0;
Чис01=0;
ШКодик=(Число(Код)+200000000000);
Для ЧисХ=1 По 12 Цикл
Если (ЧисХ=2) ИЛИ (ЧисХ=4) ИЛИ (ЧисХ=6) ИЛИ (ЧисХ=8) ИЛИ (ЧисХ=10) ИЛИ (ЧисХ=12) Тогда
Чис10=Чис10+Число(Сред(Шкодик,ЧисХ,1));
КонецЕсли;

Если (ЧисХ=1) ИЛИ (ЧисХ=3) ИЛИ (ЧисХ=5) ИЛИ (ЧисХ=7) ИЛИ (ЧисХ=9) ИЛИ (ЧисХ=11) Тогда
Чис01=Чис01+Число(Сред(Шкодик,ЧисХ,1));
КонецЕсли;

КонецЦикла;
Чис1=Чис10*3;
Чис2=Чис1+Чис01;
Пока Чис2 >9 Цикл
Чис2=(Чис2-10);
КонецЦикла;
Если Чис2=0 Тогда
Чис2=Чис2;
Иначе
Чис2=(10-Чис2);
КонецЕсли;

НовыйШтрихКод=Число(Строка(Шкодик)+Строка(Чис2));
Штрихкод=НовыйШтрихКод;
КонецПроцедуры
papadge
13.11.2013 16:39Ответ № 6
Спасибо огромное, нашел.
papadge
13.11.2013 18:33Ответ № 7
Вообщем теперь совсем запутался.
Обработка показала мне список ШК, у которых контр. цифра не верна.
Но! Неверная КЦ также стоит и на ШК, кот наклеил поставщик на своем товаре.
То есть получается, мы вроде вводим тот ШК, который они нам присылают, но он оказывается неверным.
Предположим, у него КЦ 1, а должна быть 3.
Мы забиваем 1, 1с ругается но дает сохранить.
Печатаем сами ШК- в этикетке печатается 3.
Сравниваем сами "полоски"- они соответственно разные.
Но касса (фронтол), оба напечатанных ШК (и наш, правильный, и их, неправильный) видит совершенно нормально, товар можно пробить.
Совершенно теперь запутался. Что делать в таких ситуациях?

Конф Торговый дом 7 SE (7.0.33.8) (астор).
1С:Предприятие 8.2 (8.2.16.368)

Да, самое интересное, что если печатаем ценник на такой товар, в нем КЦ также некорректная (единица), как и в карточке товара. А при пробитии на кассе товара по ШК из ценника пробивается совсем другой товар. Засада из засад...
Изменено 13.11.13 18:35:10
Подсказка: Вы можете добавить любую страничку в Избранное щелкнув по значку
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.