Генерация штрих-кода в 1С 8

Генерация 13-ти значного штрихкода стандарта EAN-13 с вычислением 13-ой (контрольной) цифры

Данная обработка из пятизначного цифрового кода вида «12345» генерирует код вида «4GKBHKL*bcdefe+» с вычислением 13-ой (контрольной) цифры. Код вида  «4GKBHKL*bcdefe+» отображается стандартным штрихкодом EAN13 при использовании шрифта CODE EAN13.

Искал что-нибудь подобное готовое  для 1С 8, но не нашел. В обработке использовал найденый мной код для «семерки», написаный vaterpas@gmail.com (еще раз ему спасибо!) на странице http://www.forum.mista.ru/topic.php?id=445098.

Перенес это дело на «восьмерку» и добавил вычисление 13-ой цифры.

Для тех, кто не знает — сканеры, считывая штрихкод, определяют его стандарт. Если определен EAN13, то сканер считывает первые 12 цифр, вычисляет 13-ю, и, если вычисленая сканером и указаная в штрихкоде цифры совпадают, только в этом случае сканер отдает считаный штрихкод на устройство, с которым работает.

Метод вычисления 13-ой цифры легко найти в Инете, поэтому не буду распространяться на эту тему.

Неиспользуемые первые 7 знаков кода можно «забить» нулями. Я занял это место так — «46»  это Россия, «01701» это последние 5 знаков ИНН предприятия. (как бы в соответствии со стандартом EAN13 Wink ).

8 Comments

  1. babylon_5

    >> Искал что-нибудь подобное готовое для 1С 8, но не нашел.

    Хм… А в любой типовой посмотреть?.. Так там еще и EAN8…

    А потом немного «творчески» переработать код если уж очень хочется избежать нелицензионного использования кода 1С. 🙂

    Да, и есть идея. Можно еще сделать линейку обработок, которые будут создавать EAN13 из 6ти, 7ми, …, 12ти — значных чисел. 😀

    Reply
  2. _Le_Shik_

    (1) babylon_5,

    Да вот Типовой под рукой нету(.

    А Инет есть))

    А что там в типовой? На подскажешь — где искать?

    Reply
  3. babylon_5

    1) Ну, раз есть инет — значит есть и типовые…

    2) Еще вариант: скачай тут ‘Сканирочку’ O-Planet’a. Там алгоритм для EAN-13 правильный. Для EAN-8, правда, работает с ошибками. Но у тебя-то EAN-13…

    Reply
  4. madvovik

    Мсье в Инете полно обработок и даже стандартных методов создания всех типов штрих кодов, зачем снова из обретать колесо? 1с печать штрих кодов что плохо работает???

    Reply
  5. novosys

    Ребята, а вы сами-то типовые смотрели? Там внешняя компонента используется, а бывают случаи, когда ей невозможно воспользоваться. Тогда приходится писать алгоритм по формированию текста штрихкода для вывода его на печать с помощью специального шрифта.

    Reply
  6. babylon_5

    (.)

    Reply
  7. SUGROB

    Не прошли мои труды даром 🙂 (vaterpas@gmail.com это я)

    Лично я делал этот алгоритм для 7-ки, т.к. мне надо было штрихкоды сохранять вобще в pdf, это универсальный формат, который сохраняет для текста в себе еще и шрифты. У Китайцев и других производителей товаров возникает вопросы какой штрихкод клеить к нашему товару. т.к. в основном так получается, что они и не слышали что такое EAN13, а тут можно и распечатать и в векторе открыть и на печать вывести хоть на лист А1 без потери качества.

    Искал в то время софт чтоб заполучить штрихкод — везде просила регистрировать и закинуть денежку для регистрации. а производителям нужен простой универсальный формат со штрихкодом, просто xls файл им не кинешь, к нему надо прилагать штрихкод и доп софт, на худой конце шрифт. А pdf в себе все содержит сразу.

    13-й символ расчитывется как

    допустим наш код: 123456789012

    x=1+3+5+7+9+1=26

    y=2+4+6+8+0+2=22

    z=x*3+y=3*22+26=66+26=92

    (z+n)/10=(наименьшее целое число), где n это и есть 13е число — целое число от 0-9 неотрицательное

    (92+8/100)=10 , значит 13я цифра = 8

    ————-

    берем пример скриншота:

    460170112345

    x=4+0+7+1+2+4=18

    y=6+1+0+1+3+5=16

    z=16*3+18=48+18=66

    (66+4)/10=70 (без остатка) — 13е число = 4

    вот откель получается штрихкод 4601701123454

    Reply
  8. Legin

    В обработке есть небольшая ошибка — в модуле формы, строка 20 нужно привести результат к строке, удалив разделители разрядов:

    Код12 = Формат(Число(Строка(Код12) + Строка(ЭлементыФормы.КЦифра.Значение)),»ЧГ=»);

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *