|
22.07.2009, 15:59 | #1 |
Участник
|
Проблема печати Штрих-кода
Может кто сталкивался с такой проблемой. У некоторых!!!! пользователей Штрих код печатается очень короткий и соответственно даже несчитывается после сканером. Если кто сталкивался - подскажите в чем может быть проблема???
Вывожу так display str InvoiceBarCode() { barcode bc = barcode::construct(BarcodeType::Code128); ; bc.string(true, global::RuAny2EnUpr(headerData.invoiceId()), BarcodeContentType::Undefined); return bc.barcodeStr(); } Методом тыка удалось установить , что помогает переустановка драйвера принтера, но заказчика такой вариант решения проблемы не устраивает. Сужение Штрих-кода может произойти в любой момент - пользователь может напечатать 10 отчетов и штрих код нормально читается, а на 11 раз он сужается. Пробовал масштабировать в самом отчете - это тоже не помогло!!! Какие у кого мысли??? Только чур по теме! |
|
22.07.2009, 17:08 | #2 |
Участник
|
Куда выводится отчет? Это отчет стандартными средствами Аксапты ? Какая версия Аксапты ? Или он выводится в Ворд / в Эксель ? Если в Ворд / в Эксель - то по файлу шаблона или просто так? Штрих-код сужается только при выводе на бумагу или визуально на экране тоже ? Это именно отчет или печать этикеток на принтере ? На каком типе принтера печатаете ?
Попробуйте инсталлировать специальный штрифт для бар-кодов и указать его в настройках фонта для того поля, куда печатается бар-код в вашем отчете. Или у вас уже именно так и сделано? Последний раз редактировалось Zabr; 22.07.2009 в 17:13. |
|
22.07.2009, 17:15 | #3 |
Участник
|
Отчет выводится через report на экран, Это отчет стандартными средствами Аксапты. Аксапта 3.0. и Визуально и при выводе на бумагу. Это именно отчет, а именно торг 12, HP - а точнее не скажу.
|
|
22.07.2009, 17:18 | #4 |
Участник
|
Какой штрифт указан в настройках для этого поля в репорте ?
|
|
22.07.2009, 17:17 | #5 |
Участник
|
Лазерный!
|
|
22.07.2009, 17:21 | #6 |
Участник
|
Сделано.
BC C128 Medium. |
|
22.07.2009, 17:21 | #7 |
Ищущий знания...
|
В общем была такая проблема! Штрих код выводился не корректный, просто полоски и маленький...
очень долго искал причину, и выяснилось, что при использовании класса Barcode почему то периодически возвращалась кривая шифровка штрих кода. Решил эту проблему использование DLL на прямую, сейчас печатает стабильно! Вот пример: X++: static str getBarcodeStr(InvoiceBarcode _invoiceBarcode) { str barcodeStr; DLL barcodeDLL; DLLFunction bC_EANUPC; #DEFINE.DLL_NAME('Bcfont32') ; barcodeDLL = new DLL(#DLL_NAME); bC_EANUPC = new DLLFunction(barcodeDLL, 'BC_EAN13'); bC_EANUPC.returns(ExtTypes::STRING); bC_EANUPC.arg(ExtTypes::String); barcodeStr = strFmt("%1", bC_EANUPC.call(substr(strFmt("%1",_invoiceBarcode),1,strlen(_invoiceBarcode) - 1))); return barcodeStr; }
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: Logger (3), Hammer (1). |
23.07.2009, 09:06 | #8 |
Участник
|
Цитата:
Сообщение от lev
В общем была такая проблема! Штрих код выводился не корректный, просто полоски и маленький...
очень долго искал причину, и выяснилось, что при использовании класса Barcode почему то периодически возвращалась кривая шифровка штрих кода. Решил эту проблему использование DLL на прямую, сейчас печатает стабильно! Вот пример: X++: static str getBarcodeStr(InvoiceBarcode _invoiceBarcode) { str barcodeStr; DLL barcodeDLL; DLLFunction bC_EANUPC; #DEFINE.DLL_NAME('Bcfont32') ; barcodeDLL = new DLL(#DLL_NAME); bC_EANUPC = new DLLFunction(barcodeDLL, 'BC_EAN13'); bC_EANUPC.returns(ExtTypes::STRING); bC_EANUPC.arg(ExtTypes::String); barcodeStr = strFmt("%1", bC_EANUPC.call(substr(strFmt("%1",_invoiceBarcode),1,strlen(_invoiceBarcode) - 1))); return barcodeStr; } |
|
23.07.2009, 09:22 | #9 |
Участник
|
Как то была проблема с тем что шрифт в отчёте слетал, потому что железно прописал его на контроле.
Перекрыл метод init report-a и там его назначил barcode.font(barcodeSetup.fontName); И проблема исчезла.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
23.07.2009, 09:48 | #10 |
Участник
|
Цитата:
Будем ждать!!! Пока проблема всплывет. |
|
23.07.2009, 09:53 | #11 |
Участник
|
Да и ещё длину это контрола указывал в mm, а не в символах.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
29.07.2009, 10:20 | #12 |
Участник
|
Цитата:
Сообщение от lev
В общем была такая проблема! Штрих код выводился не корректный, просто полоски и маленький...
очень долго искал причину, и выяснилось, что при использовании класса Barcode почему то периодически возвращалась кривая шифровка штрих кода. Решил эту проблему использование DLL на прямую, сейчас печатает стабильно! Вот пример: X++: static str getBarcodeStr(InvoiceBarcode _invoiceBarcode) { str barcodeStr; DLL barcodeDLL; DLLFunction bC_EANUPC; #DEFINE.DLL_NAME('Bcfont32') ; barcodeDLL = new DLL(#DLL_NAME); bC_EANUPC = new DLLFunction(barcodeDLL, 'BC_EAN13'); bC_EANUPC.returns(ExtTypes::STRING); bC_EANUPC.arg(ExtTypes::String); barcodeStr = strFmt("%1", bC_EANUPC.call(substr(strFmt("%1",_invoiceBarcode),1,strlen(_invoiceBarcode) - 1))); return barcodeStr; } |
|
22.07.2009, 19:00 | #13 |
Участник
|
Цитата:
Сообщение от Hammer
Может кто сталкивался с такой проблемой. У некоторых!!!! пользователей Штрих код печатается очень короткий и соответственно даже несчитывается после сканером. Если кто сталкивался - подскажите в чем может быть проблема???
Вывожу так display str InvoiceBarCode() { barcode bc = barcode::construct(BarcodeType::Code128); ; bc.string(true, global::RuAny2EnUpr(headerData.invoiceId()), BarcodeContentType::Undefined); return bc.barcodeStr(); } Методом тыка удалось установить , что помогает переустановка драйвера принтера, но заказчика такой вариант решения проблемы не устраивает. Сужение Штрих-кода может произойти в любой момент - пользователь может напечатать 10 отчетов и штрих код нормально читается, а на 11 раз он сужается. Пробовал масштабировать в самом отчете - это тоже не помогло!!! Какие у кого мысли??? Только чур по теме!
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
23.07.2009, 09:06 | #14 |
Участник
|
|
|
23.07.2009, 14:36 | #15 |
Участник
|
там кажись надо вызвать функцию типа encode...
посмотрите по системе где используется и сделайте также)
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
23.07.2009, 15:18 | #16 |
Участник
|
|
|
23.07.2009, 17:18 | #17 |
Участник
|
запустите джоб
X++: static void Job24_bc(Args _args) { barcode bc = barcode::construct(BarcodeType::EAN128); // barcode bc = barcode::construct(BarcodeType::Code128); ; bc.string(true, '12345', BarcodeContentType::Item); info(bc.barcodeStr()); что это за штрихкод Code128? его штрихкодридер понимает? и результат работы функции global::RuAny2EnUpr этот тип штрихкода съест?
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
24.07.2009, 08:53 | #18 |
Участник
|
Цитата:
Сообщение от ivas
запустите джоб
X++: static void Job24_bc(Args _args) { barcode bc = barcode::construct(BarcodeType::EAN128); // barcode bc = barcode::construct(BarcodeType::Code128); ; bc.string(true, '12345', BarcodeContentType::Item); info(bc.barcodeStr()); что это за штрихкод Code128? его штрихкодридер понимает? и результат работы функции global::RuAny2EnUpr этот тип штрихкода съест? 2.Нет не съест. Запустил джоб Виснет в классе на этом цикле - barcodeEAN128 , метод ItemId. while (strLen(__itemId) < #EAN_LEN) { __itemId = '0' + __itemId; } Последний раз редактировалось Hammer; 24.07.2009 в 09:04. |
|
12.08.2009, 17:06 | #19 |
Участник
|
Я столкнулся тоже с такой проблемой, решилось все бэкпортом классов BarcodeCode128, BarcodeEAN128 из AX4.0 - ИМХО, так проще и понятнее, даже видно как этот код формируется, потому что в 4.0 нет вообще обращения к библиотеке.
__________________
http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! |
|
|
За это сообщение автора поблагодарили: leva (2). |
13.08.2009, 12:10 | #20 |
Участник
|
Причина проблемы и способ решения описаны здесь
контейнер: += трагедия вставки пустой строки. Хотя там была проблема с пустым значением, но исправляет и ошибку "кривых" результатов. Если приведенный там код "причесать", то он разбивается на 2 фрагмента: часть - это модификация init(), другая часть - модификация encode(). Модифицировать barCodeStr() - не нужно. Собственно, вопрос правильного определения DLL библиотек и их параметров. |
|
Теги |
barcode, печать, штрихкод |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|