Доброе время суток, уважаемые форумчане.
Конфигурация Розница 2.2.3.10 (Платформа 8.3.8.1747).
Есть штрихкод RT_00000290_20 Тип штрихкода code128, но при печати вместо штрихкода выдает Invalid Barcode, обновил до 2.2.4.17, тоже самое. Посмотрев в отладчике наткнулся на функцию, которая определяет тип штрихкода как ITF14, попробовал на версии 2.2.2.15 - штрихкод печатается. Также только что заметил, что в любой конфигурации, при создании штрихкода "RT_00000290_20" автоматом подставляется тип штрихкода ITF14, а если использовать любой другой штрихкод не заканчивающийся на "...0", например "RT_00000290_22", то всё в порядке. Читал в интернете по поводу code128 - ничего конкретного не выяснил.
Может кто может объяснить, это ошибка разработчиков, либо по каким-то причинам штрихкода заканчивающегося на ноль не должно быть? Каковы принципы формирования code128, желательно сразу на практическом примере.
Если это важно, у нас формируется данный штрихкод программно, через самописную обработку, что-то вроде:
"RT-"+"КодНоменклатуры"+"_"+"Характеристика"
где Характеристика это число в диапазоне 12-46.
(1) markovki, возможно ошибка в коде определения типа штрихкода.
в розница 2.2.2.20 есть такая проверка для ITF14:
Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда
Прервать;
КонецЕсли;
В ITF14 допускаются только цифры.
А по поводу RT_00000290_20. По всей видимости последняя цифра соответствует вычисляемой контрольной цифре. Хотя само вычисление уже ошибочно, из-за не прохождения проверки на "только цифры в коде".
(2) spacecraft, вы правы, эта процедура определения типа штрихкода есть во всех упомянутых сегодня конфигурациях, разница в том, что в 2.2.2.15 она не используется при печати, а в 2.2.3.10 она используется и соответственно при попытке напечатать выдает ошибку.
Мне лично не совсем понятна методика проверки типа штрихкода, читал в интернете, что вроде как code128 не использует контрольную цифру и может быть составлен произвольного вида, а другие пишут, что состоит он из 14-ти символов, где 12-й - контрольная цифра, четкой и понятной информации по методу формирования данного типа штрихкода к сожалению не нашел. Разработчикам также вчера звонил, обещали отписаться по этому вопросу, пока также ничего.
(3) markovki, CODE128 есть 3 набора. Но реальной проверки в 1С на это нет. Вся проверка только на то, чтоб код символа не был больше 127.
По поводу контрольных цифр. В отличие от EAN13 и других такого же плана типов штрихкодов, "контрольный символ" не печатается и не участвует в формировании кода. Он просто нужен для сканера.
(6) spacecraft, есть ли какие то подозрения на вот такой формат формирования штрихкода?
"RT-"+"КодНоменклатуры"+"_"+"Характеристика"
где Характеристика это число в диапазоне 12-46.
Мне например кажется странным, что штрихкод становится корявым только при нуле в окончании.
Если я переделаю например формирование кода вот в такой вид:
"RT"+"КодНоменклатуры"+"_"+"Характеристика"+"9"
сохранив при этом количество знаков равным 14, то проблема с нулем решится, но не возникнет ли других непредвиденных последствий...?
(7) markovki, возможно не там ищите проблему. Я бы начал с самописной обработки. Именно там формируется штрихкод и заносится в регистр с определенным типом.
(9) markovki, проблема не в правильности формирования code128. Вот ссылка.
В типовой функции 1С по определению типа штрихкода, code128 проверяется в последнюю очередь. И если раньше обнаружится соответствие штрихкода другому типу, то тот тип и будет использоваться.
Смотрите свою обработку, или показывайте ее код. Там в ней проверяете тип, или принудительно его указываете?
(2) spacecraft, в том то и дело, что ВОЗМОЖНО ошибка в коде разработчиков, т.е. по сути сейчас стоит вопрос, либо это признают ошибкой и необходимо ждать обновления, либо дорабатывать обработку в которой формируется штрихкод и здесь как раз-таки всплывает второй вопрос, как правильно формировать этот тип штрихкода.
Служба поддержки молчит, а время идет )