|   |   | 
| 
 | v7: Печать штрихкодов - код 1234567890128. Продолжение | ☑ | ||
|---|---|---|---|---|
| 0
    
        e200420 12.06.19✎ 15:56 | 
        Приветствую! Итак, в продолжение темы Печать штрихкодов - код 1234567890128.
 Стандартная компонента "1С.V8.Печать штрих кодов" Печатает штрихкод с номером 1234567890128, вместо 2000001559261, например, в моем случае. И этот случай не единственный. Примерно 1 позиция из 100 печатается именно так криво. Дополнительно иногда пользуюсь шрифтом EAN13. Так вот со шрифтом штрих печатает, но не читает ничем, вообще. Загнал число 2000001559261 в несколько онлайн генераторов штрихкода. Выдает ошибку. Выходит, что именно создание 13 символьного кода происходит неверно. Получается, что компонента 1с распознает неправильную кодировку и выдает номер 1234567890128, а шрифтом печать проходит без проблем, на первый взгляд. | |||
| 1
    
        Garykom гуру 12.06.19✎ 16:18 | 
        И вот таким еще наверно и зарплату платят, которые ссылку на ветку приводят а ответа на свой тупой вопрос там прочитать не могут в (7)     | |||
| 2
    
        Злопчинский 12.06.19✎ 16:19 | 
        Продолжайте наблюдения!     | |||
| 3
    
        Garykom гуру 12.06.19✎ 16:21 | 
        Загоняешь 200000155926 в калькулятор https://www.gs1.org/services/check-digit-calculator и внимание правильный ответ
 200000155926 0 Не 1 а 0! Так что у вас не EAN13 а какая то левая хрень, поэтому и не печатается стандартной компонентой. | |||
| 4
    
        Злопчинский 12.06.19✎ 16:21 | 
        (3) ты, блина, умный!     | |||
| 5
    
        Garykom гуру 12.06.19✎ 16:23 | 
        (4) Я обычный, просто некий прописные истины типа того что "шрифтами печатает же" пишут.
 Сцуко ну нет при печати шрифтами проверки, если ее самим не написать, логично же. Науй об этом писать? | |||
| 6
    
        dmitryds 12.06.19✎ 16:35 | 
        (5) кодеры не знают стандартов, а если бы могли прочитать документацию по формированию ШК, были бы программистами и не задавали бы таких вопросов)     | |||
| 7
    
        MWWRuza гуру 12.06.19✎ 16:48 | 
        Так, это... ТопикСтартеру, на заметку... Если уж очень хочется напечатать ШК с помощью шрифта, фрагмент из моей рабочей конфы(алгоритм честно скомуниздил у кого-то, давно, уже и не помню где):
 // Функция для печати ШК шрифтом EanGnivc. ВК баркоде.осх, иногда, особенно если ШК мелкий, не работает... Функция СформироватьСтрокуEanGnivc(ШтрихкодСтрокойСимволов) Экспорт Перем СпособыКодированияЛевойЧасти[10]; СимволыСпособовКодирования = "#$%&'()*+,"; ЛевыйЗащитныйШаблон = "!"; СреднийЗащитныйШаблон = "-"; ПравыйЗащитныйШаблон = "!"; СимволыШрифтаПоТипамКодов = СоздатьОбъект("ТаблицаЗначений"); СимволыШрифтаПоТипамКодов.НоваяКолонка("Ключ"); СимволыШрифтаПоТипамКодов.НоваяКолонка("Значение"); СимволыШрифтаПоТипамКодов.НоваяСтрока(); СимволыШрифтаПоТипамКодов.Ключ = "L"; СимволыШрифтаПоТипамКодов.Значение = "0123456789"; СимволыШрифтаПоТипамКодов.НоваяСтрока(); СимволыШрифтаПоТипамКодов.Ключ = "G"; СимволыШрифтаПоТипамКодов.Значение = "ABCDEFGHIJ"; СимволыШрифтаПоТипамКодов.НоваяСтрока(); СимволыШрифтаПоТипамКодов.Ключ = "R"; СимволыШрифтаПоТипамКодов.Значение = "abcdefghij"; СпособыКодированияЛевойЧасти[1] = "LLLLLL"; СпособыКодированияЛевойЧасти[2] = "LLGLGG"; СпособыКодированияЛевойЧасти[3] = "LLGGLG"; СпособыКодированияЛевойЧасти[4] = "LLGGGL"; СпособыКодированияЛевойЧасти[5] = "LGLLGG"; СпособыКодированияЛевойЧасти[6] = "LGGLLG"; СпособыКодированияЛевойЧасти[7] = "LGGGLL"; СпособыКодированияЛевойЧасти[8] = "LGLGLG"; СпособыКодированияЛевойЧасти[9] = "LGLGGL"; СпособыКодированияЛевойЧасти[10] = "LGGLGL"; СпособКодированияПравойЧасти = "RRRRRR"; Если СтрДлина(ШтрихкодСтрокойСимволов) = 13 Тогда КоличествоСимволовВГруппе = 6; ИначеЕсли СтрДлина(ШтрихкодСтрокойСимволов) = 8 Тогда КоличествоСимволовВГруппе = 4; СимволыСпособовКодирования = ""; ШтрихкодСтрокойСимволов = "0" + ШтрихкодСтрокойСимволов; Иначе Предупреждение("Поддерживаются только штрихкоды длиной 13 и 8 символов"); Возврат ""; КонецЕсли; ИндексСпособаКодирования = Число(Лев(ШтрихкодСтрокойСимволов,1)); ЛеваяЧастьКода = ""; ПраваяЧастьКода = ""; Для ИндексСимвола = 1 По КоличествоСимволовВГруппе Цикл СпосКодЛевЧаст = СпособыКодированияЛевойЧасти[ИндексСпособаКодирования + 1]; СимвКодКлюч = Сред(СпосКодЛевЧаст,ИндексСимвола,1); Стр = ""; Если СимволыШрифтаПоТипамКодов.НайтиЗначение(СимвКодКлюч,Стр,"Ключ") = 1 Тогда СимвПоТипу = СимволыШрифтаПоТипамКодов.ПолучитьЗначение(Стр,"Значение"); КонецЕсли; ЛеваяЧастьКода = ЛеваяЧастьКода + Сред(СимвПоТипу,Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола+1),1))+1,1); Стр = ""; СимвКодПравКлюч = Сред(СпособКодированияПравойЧасти,ИндексСимвола,1); Если СимволыШрифтаПоТипамКодов.НайтиЗначение(СимвКодПравКлюч,Стр,"Ключ") = 1 Тогда СимвПоТипуПрав = СимволыШрифтаПоТипамКодов.ПолучитьЗначение(Стр,"Значение"); КонецЕсли; ПраваяЧастьКода = ПраваяЧастьКода + Сред(СимвПоТипуПрав,Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола + КоличествоСимволовВГруппе+1),1))+1,1); КонецЦикла; Результат = "" + Сред(СимволыСпособовКодирования,ИндексСпособаКодирования+1,1) + ЛевыйЗащитныйШаблон + ЛеваяЧастьКода + СреднийЗащитныйШаблон + ПраваяЧастьКода + ПравыйЗащитныйШаблон; Возврат Результат; КонецФункции | |||
| 8
    
        MWWRuza гуру 12.06.19✎ 16:52 | 
        +(7) Нужна была для печати очень "узенького" ШК на ценнике, когда стандартная осх-сина, отказывалась ШК выводить, а с помощью шрифта получается, совсем узенький, миллиметра 4-5 свободно.     | |||
| 9
    
        Злопчинский 12.06.19✎ 16:54 | 
        (8) это не по пацански
 шк можно вообще безо всего напечатать. имея только моксель. без шрифтов, без букв, без ВК. вообще без всего. | |||
| 10
    
        e200420 12.06.19✎ 17:02 | 
        (3) спасибо, Кэп.
 Про неверно сгенерированный код я и писал выше. Судя по вашему взорванному пукану, как раз такие как вы и пишут этот говнокод в самописных конфах, который приходится без конца переделывать. В прошлой ветке нет конкретного решения вопроса. А тут мы все и подытожим )) | |||
| 11
    
        e200420 12.06.19✎ 17:06 | 
        (7) спасибо за помощь. Со шрифтом все работает, надо лишь сделать проверку EAN13. 
 (8) есть ссылка на этот шрифт? я пока используя Code EAN 13. Он крупный. Мелкого пока не встречал, но пригодится. | |||
| 12
    
        e200420 12.06.19✎ 17:10 | 
        (6) согласен, если бы все все знали и читали все документации, то и форум не нужен был. А так, обиженные мужчинки типа Garykom могут позасирать ветку матами и своим негодованием. Придет новичек и будет читать эту срань часами вместо помощи в решении своего вопроса.     | |||
| 13
    
        Garykom гуру 12.06.19✎ 17:48 | 
        (12) В курсе что "кодер" это ты?
 Нафуя ты пытаешься упорно напечатать кривой ШК с помощью шрифтов, если один фуй 99% сканеров (в которых есть проверка на КС) его не прочитают? Чтоб було? | |||
| 14
    
        Злопчинский 12.06.19✎ 18:49 | 
        (13) ты чего в заповеднике расшумелся?     | |||
| 15
    
        Garykom гуру 12.06.19✎ 19:32 | 
        (14) За профессию обидно.     | |||
| 16
    
        MWWRuza гуру 12.06.19✎ 20:38 | 
        (11) есть ссылка на этот шрифт?
 Зачем Вам ссылка? Он есть в папке регламентированной отчетности 7.7, за любой квартал и любой год, начиная примерно с 2005 и по сей день... | |||
| 17
    
        BalBess 13.06.19✎ 07:30 | 
        Мы сейчас используем formex для печати штрихкодов (спасибо Альфу), в том числе и qr коды
 Как-то сравнивал скорость печати через шрифт и через formex, через шрифт гораздо медленнее (не помню точных цифр) Представьте нужно напечатать 1000 ценников и 1000 раз будет вызываться СформироватьСтрокуEanGnivc, сколько это займет времени.. и подогнать под размеры можно лучше, через шрифт не всегда подгоняется как надо | |||
| 18
    
        Сияющий в темноте 13.06.19✎ 08:44 | 
        Чего вы все,как дети?
 ну хочет человек штрихкод.с неверной контрольной суммой,так пусть печатает,и code39 и code93,его напечатают и любой сканер прочитает. можно и другие,но большинство любят четное число цифр. а топикстартеру нужно понять одно-его цифры штрих-кода не являются правильным штрихкодом EAN. | |||
| 19
    
        e200420 13.06.19✎ 08:51 | 
        (13) печатал ибо уверяли, что проблема в чем угодно, только не в коде. В споре истина и появилась. 
 (15) вы даже не знаете какой я программист и какого масштаба вопросы умею решать. И программист ли я вообще. А вам уже обидно. Что-то я не наблюдал ваших пылких речей в действительно сложных и необычных вопросах на форуме. Разобрались в одной теме и теперь самоутверждаетесь за чужой счет. Ну, так себе занятие. Хотя, в (3) для меня было полезно узнать нечто новое. Я с торговым оборудованием сталкиваюсь редко. (16) я понял о каком шрифте речь. Работал с таким. (17) спасибо за инфу. Через formex обязательно попробую. Кстати, formex обновился до версия: 2.0.5.143 от 21.05.2019. | |||
| 20
    
        e200420 13.06.19✎ 08:57 | 
        (18) да я к этому выводу и пришел, что печатает не EAN. Это били следствие и вывод. Ну пошел я не таким путем как остальные, все, конец света. Проблему же выявил быстро и при помощи подручных средств ))
 Описал лишь симптомы, остальным "на заметку". | |||
| 21
    
        tgu82 13.06.19✎ 09:00 | 
        (20) Там есть проверка: 12 символов а последняя цифра - контрольная сумма. И вроде проблем и нет     | |||
| 22
    
        e200420 13.06.19✎ 09:02 | 
        (21) где там?     | |||
| 23
    
        tgu82 13.06.19✎ 09:10 | 
        не там, неправильно выразился, но как-то так:
 Функция глКонтрольныйСимволEAN(ШтрКод, Тип) Экспорт Четн = 0; Нечетн = 0; Если Тип = 13 Тогда КолвоИтераций = 6; Иначе КолвоИтераций = 4; КонецЕсли; Для Индекс = 1 По КолвоИтераций Цикл Четн = Четн + Сред(ШтрКод, 2 * Индекс, 1); Нечетн = Нечетн + Сред(ШтрКод, 2 * Индекс - 1, 1); КонецЦикла; Если Тип = 13 Тогда Четн = Четн * 3; Иначе Нечетн = Нечетн * 3; КонецЕсли; КонтЦифра = 10 - (Четн + Нечетн) % 10; Возврат ?(КонтЦифра = 10, "0", Строка(КонтЦифра)); КонецФункции // глКонтрольныйСимволEAN() | |||
| 24
    
        e200420 13.06.19✎ 09:13 | 
        а вот что написано у меня в ГМ.
 Function CreateBarcode(Code) Export Code = TrimAll(Code); Ч1 = 2; Ч2 = 0; Ч3 = 0; Ч4 = 0; Ч5 = 0; Ч6 = 0; Ч7 = Number(Mid(Code,1 ,1)); Ч8 = Number(Mid(Code,2 ,1)); Ч9 = Number(Mid(Code,3 ,1)); Ч10= Number(Mid(Code,4 ,1)); Ч11= Number(Mid(Code,5 ,1)); Ч12= Number(Mid(Code,6 ,1)); Ч13= 0; // Составим четные и умножим на 3 Четн = Ч2 + Ч4 + Ч6 + Ч8 + Ч10 + Ч12; Четн3 = Четн*3; // Составим нечетные, отличные от контрольной цифры НеЧт = Ч1 + Ч3 + Ч5 + Ч7 + Ч9 + Ч11; // Составим полученные цифры Рез = Четн3 + НеЧт; // Возьмем последнюю цифру числа и вычтем ее от 10 Ч13 = 10 - Right(Рез,1); Barcode = String(Ч1)+ String(Ч2)+ String(Ч3)+ String(Ч4)+ String(Ч5)+ String(Ч6)+ String(Ч7)+ String(Ч8)+ String(Ч9)+ String(Ч10)+ String(Ч11)+ String(Ч12)+ String(Ч13); Return Barcode; EndFunction | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |