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