02.06.2010, 14:05 | #1 |
Участник
|
Формирование штрих-кода: Code-128 A, B, C
Подскажите, где можно почитать о формировании штрих-кодов в Аксапте?
Мне необходимо сформировать один штрих-код в формате Code-128 A и один в формате Code-128 C. До сих пор я был уверен, что все, что требуется сделать - это выбрать тип штрих-кода на форме BarcodeSetup, а метод encode() впоследствии сам преобразует исходную строку в требуемый формат, что-то вроде: X++: void test(BarcodeSetupId _barcodeSetupId, BarCodeString _barCodeContents ) { BarCodeSetup barcodeSetup = BarcodeSetup::find(_barcodeSetupId); Barcode barcode = barcodeSetup.barcode(); ; if (barcodeSetup.validateBarcode(_barCodeContents)) { barCode.string(true, _barCodeContents); barCode.encode(); } else { throw(error(strfmt("@SYS41409", barCode.barcodeType(), _barCodeContents))); } info (barCode.barcodeStr()); } Но судя по методу BarcodeCode128.optimizeCodesets(), CodesetA или CodesetC выбирается автоматически в зависимости от содержимого исходной строки. Я в работе со штрих-кодами пока что не очень хорошо разбираюсь. Подскажите, надо ли каким-либо образом кодировать исходную строку перед использованием класса BarCode? Где об этом можно почитать? |
|
10.06.2010, 14:31 | #2 |
Участник
|
В конечном итоге посоветовал потестировать у клиента, как сканеры понимают стандартный аксаптовский Code128, и не мучаться.
Интернет подсказывает, что в Code 128 имеется три режима кодировки: A, B и C. Стартовый символ штрих-кода определяет, какой режим будет использоваться. Но режим кодировки может поменяться посреди штрих-кода, и эта функция по умолчанию и используется в AX. Например, в строке AB12345678 имеет смысл для первых двух символов использовать режим A, а для остальных - режим C, в котором числа кодируются в два раза компактнее. Я подозреваю, что все сканеры должны понимать такой смешанный режим кодировки, и никаких доработок в AX делать не надо. Посмотрим, что покажет тест. На википедии тоже неплохая статья об этом коде. |
|
11.06.2010, 01:40 | #3 |
Участник
|
Если не секрет: какая бизнес-задача потребовала такого штрих-кода, в котором режим кодировки может поменяться посреди штрих-кода?
|
|
11.06.2010, 13:03 | #4 |
Участник
|
Цитата:
Кодовый набор C - только числа (00-99), то есть две цифры в штрих-коде записываются одним символом. Кодовый набор B - цифры и прописные и строчные буквы латинского алфавита. Кодовый набор A - цифры, прописные буквы и управляющие коды. Стандарт Code 128 предусматривает использование более одного кодового набора в одном штрих-коде. Для чего? Думаю, что для уплотнения закодированной информации. Я приводил пример в предыдущем посте. Да и управляющие коды в базовый кодовый набор, наверное, не помещались. Исходная задача как-раз заключалась в том, чтобы в одном штрих-коде использовать только кодовый набор A, а в другом только кодовый набор C. В стандартной AX, вроде, такой возможности нет, хотя ее должно быть достаточно легко добавить. Вот только надо ли? Я пока что предполагаю, что все сканеры должны понимать смешанный набор Code 128, и нужды в доработках нет. Возможно, что я ошибаюсь. |
|