5
Тип поля: штрих-код
Автор AChekin, 27 мая 2013 13:43
Сообщений в теме: 9
#1
Отправлено 27 Май 2013 - 13:43
Собственно, сабж.
Дело в том, что при использовании КБ в сфере продаж или предоставления услуг, очень было бы удобно иметь поле, в котором бы размещался уникальный штрих-код строки.
Не знаю, можно ли сделать такое поле путем вычислений, но от наличия такой возможности в базовой программе я (как, полагаю, и многие) бы не отказался.
Спасибо.
Дело в том, что при использовании КБ в сфере продаж или предоставления услуг, очень было бы удобно иметь поле, в котором бы размещался уникальный штрих-код строки.
Не знаю, можно ли сделать такое поле путем вычислений, но от наличия такой возможности в базовой программе я (как, полагаю, и многие) бы не отказался.
Спасибо.
#2
Отправлено 27 Май 2013 - 13:53
Путем вычислений можно - такой опыт у нас уже неоднократно был при разработке персональных конфигураций. Что касается базовой возможности, такой вариант не исключен, но вряд ли будет реализован, т.к. невозможно уместить в программе все возможные варианты полей и настроек. Скорее всего просто выложим готовый код вычисления в документации.
#3
Отправлено 06 Июнь 2013 - 12:21
Присоединяюсь! Очень было бы интересно иметь в функционале своей конфигурации штрих-код.
#4
Отправлено 02 Февраль 2014 - 16:08
Добрый день. Подскажите, надеяться ли на обнародование готового кода вычисления для штрих-кода?
Несколько дней пытаюсь сделать, чтобы штрих-код был и в поле и в шаблоне печати, пока не получается нигде его отобразить.
Использую инструкции найденные в интернете по поисковому запросу штрих-код на php и css
Несколько дней пытаюсь сделать, чтобы штрих-код был и в поле и в шаблоне печати, пока не получается нигде его отобразить.
Использую инструкции найденные в интернете по поисковому запросу штрих-код на php и css
#5
Отправлено 03 Февраль 2014 - 12:28
Пример вычисления для визуализации штрих-кода:
В поле "Штрих-код" будет отображен штрих-код по числу из поля "Число". Разумеется, в поле "Штрих-код" должен быть включен режим HTML-форматирования.
$number = $line['Число']; // поле с числом, которое необходимо преобразовать в штрих-код $digits = array("0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011"); $chet = ''; $nechet = ''; $left = ''; $right = ''; $barcode = ''; $precode = sprintf("%011d", $number); for ($i=0; $i<11; $i++) { if ($i%2==1) $chet += $precode[$i]; else $nechet += $precode[$i]; } $ctrl_digit = substr((10 - substr($chet + $nechet * 3, -1)), -1); $code = $precode.$ctrl_digit; for ($i=0; $i<6; $i++) { $left.= $digits[$code[$i]]; } for ($i=6; $i<12; $i++) { $right.= $digits[$code[$i]]; } $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px white solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; for ($i=0; $i<42; $i++) { $barcode.= "<div style='width:0px; height:40px; border-left:2px ".($left[$i]?"black":"white")." solid; float:left;'></div>"; } $barcode.= "<div style='width:0px; height:50px; border-left:2px white solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px white solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px white solid; float:left;'></div>"; for ($i=0; $i<42; $i++) { $barcode.= "<div style='width:0px; height:40px; border-left:2px ".($right[$i]?"white":"black")." solid; float:left;'></div>"; } $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px white solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; $barcode.= "<div style='height:50px;'></div>"; $barcode.= "<div style='margin:-5px 15px; letter-spacing:3px; float:left;'>".substr($code,0,6)."</div>"; $barcode.= "<div style='margin:-5px 04px; letter-spacing:3px; float:left;'>".substr($code,6,6)."</div>"; $line['Штрих-код'] = $barcode;
В поле "Штрих-код" будет отображен штрих-код по числу из поля "Число". Разумеется, в поле "Штрих-код" должен быть включен режим HTML-форматирования.
#6
Отправлено 03 Февраль 2014 - 20:03
Огромное спасибо, за код!! Все корректно отображается и работает, только не понимаю как сделать чтобы поиск по штрих-коду заработал..
- Отобразил на панели фиксированного поиска поле штрих-код, сканирую, далее сканер сам нажимает enter и поиск ничего к сожалению не показывает.
- В поле номер (тип число + автонумерация) значение 11, а в поле штрих-код (тип текст+html форматирование) значение 000000000116 .
- В коде подправил только height, чтобы меньше по высоте был штрих-код. Больше никаких исправлений не делал.
Сообщение отредактировал teacs: 04 Февраль 2014 - 09:53
#7
Отправлено 04 Февраль 2014 - 09:58
По полю "Штрих-код" искать бесполезно, т.к. это по сути "графическое" поле, там хранится визуальное представление в виде html-кода. По полю "Число" непосредственный поиск тоже невозможен, т.к. к нему в штрих-коде добавляется контрольная цифра, которую сканер тоже считывает (как в вашем примере: 11 & 6 (контр.цифра от 11) = 116). Наиболее верным алгоритмом является считывание кода, проверка корректности контрольной цифры, ее "убирание" и затем поиск по чистому числу. Но в вашем случае можно сделать и проще, добавив еще одно вычисляемое поле "Код", куда заносить числовое представление кода в виде "000000000116" и соответственно поиск вести уже по нему. Добавьте поле и замените вычисление на следующее:
Тут добавлен вывод в поле "Код" (см. комментарии в коде)
$number = $line['Число']; // поле с числом, которое необходимо преобразовать в штрих-код $digits = array("0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011"); $chet = ''; $nechet = ''; $left = ''; $right = ''; $barcode = ''; $precode = sprintf("%011d", $number); for ($i=0; $i<11; $i++) { if ($i%2==1) $chet += $precode[$i]; else $nechet += $precode[$i]; } $ctrl_digit = substr((10 - substr($chet + $nechet * 3, -1)), -1); $code = $precode.$ctrl_digit; $line['Код'] = $code; // выводим числовое представление кода в поле "Код" (тип поля "текст") for ($i=0; $i<6; $i++) { $left.= $digits[$code[$i]]; } for ($i=6; $i<12; $i++) { $right.= $digits[$code[$i]]; } $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px white solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; for ($i=0; $i<42; $i++) { $barcode.= "<div style='width:0px; height:40px; border-left:2px ".($left[$i]?"black":"white")." solid; float:left;'></div>"; } $barcode.= "<div style='width:0px; height:50px; border-left:2px white solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px white solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px white solid; float:left;'></div>"; for ($i=0; $i<42; $i++) { $barcode.= "<div style='width:0px; height:40px; border-left:2px ".($right[$i]?"white":"black")." solid; float:left;'></div>"; } $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px white solid; float:left;'></div>"; $barcode.= "<div style='width:0px; height:50px; border-left:2px black solid; float:left;'></div>"; $barcode.= "<div style='height:50px;'></div>"; $barcode.= "<div style='margin:-5px 15px; letter-spacing:3px; float:left;'>".substr($code,0,6)."</div>"; $barcode.= "<div style='margin:-5px 04px; letter-spacing:3px; float:left;'>".substr($code,6,6)."</div>"; $line['Штрих-код'] = $barcode;
Тут добавлен вывод в поле "Код" (см. комментарии в коде)
#8
Отправлено 04 Февраль 2014 - 10:40
Вот теперь все работает просто замечательно!! Еще раз огромное спасибо!!
#9
Отправлено 21 Июль 2014 - 12:37
Уважаемые программисты КБ!
Подскажите пожалуйста, что нужно добавить в код, чтобы результат создания штрих-кода отобразился в шаблоне печати PDF?
Искал в документации по mpdf на оффициальном сайте, но безрезультатно =(
Подскажите пожалуйста, что нужно добавить в код, чтобы результат создания штрих-кода отобразился в шаблоне печати PDF?
Искал в документации по mpdf на оффициальном сайте, но безрезультатно =(
#10
Отправлено 21 Июль 2014 - 12:45
К сожалению, сам не знаю, т.к. не выводил и не сталкивался с этой проблемой. Очевидно, нужно как-то менять формат вывода, к тому, который не будет искажать конвертер.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных