|
Не читается штрихкод | ☑ | ||
---|---|---|---|---|
0
Tellkira
17.09.14
✎
11:03
|
Здравствуйте. Помогите, пожалуйста.
В 1С (конфа на управляемых формах) формирую штрихкод следующим образом: Функция ПолучитьШтрихкодЕАН13(Код, Организация) Экспорт //только 12 символов //ЧисловойКод = СокрЛП(Код); ТекстовыйКод = ПолучитьШтрихкодБезПрефикса(код,Организация); //передача числового кода в текстовый //Пока Число(ЧисловойКод)<=0 Цикл // ТекстовыйКод = ТекстовыйКод + Лев(ЧисловойКод,1); // ЧисловойКод = Прав(ЧисловойКод,СтрДлина(ЧисловойКод)-1); //КонецЦикла; НовыйЧисловойКод = 0; Для а=1 По СтрДлина(ТекстовыйКод) Цикл НовыйЧисловойКод = НовыйЧисловойКод + КодСимвола(Сред(ТекстовыйКод,а,1)); КонецЦикла; //12 цифр заходит НовыйКод = СокрЛП(Строка(НовыйЧисловойКод)); НовыйКод = глДополнитьСтрокуЛ(НовыйКод,"0",12); Штрихкод = НовыйКод + глКонтрольныйСимволEAN(НовыйКод, 13); Возврат Штрихкод; КонецФункции Функция ПолучитьШтрихкодБезПрефикса(код,Организация) Префикс = Справочники.Организации.НайтиПоКоду(Организация.Код).Префикс; КодБезПрефикса = Прав(Код, СтрДлина(СокрЛП(Код)) - (СтрДлина(СокрЛП(Префикс)) + 3)); Возврат КодБезПрефикса; КонецФункции //****************************************************************************** // глДополнитьСтрокуЛ(Стр,Чем,Длина) // // Параметры: // Стр - исходная строка // Чем - символ, которым дополняем строку // Длина - длина, до которой заполняем строку // // Возвращаемое значение: // результирующая строка // // Описание: // Дополняет передаваемую строку Стр символами Чем до строки длиной Длина // слева Функция глДополнитьСтрокуЛ(Стр,Чем,Длина) Экспорт Добавить=Длина-СтрДлина(Стр); Добавок=""; Для Сч = 1 По Добавить Цикл Добавок=Добавок+Чем; КонецЦикла; Возврат Добавок+Стр; КонецФункции //глДополнитьСтрокуЛ() //****************************************************************************** // глДополнитьСтрокуП(Стр,Чем,Длина) // // Параметры: // Стр - исходная строка // Чем - символ, которым дополняем строку // Длина - длина, до которой заполняем строку // // Возвращаемое значение: // результирующая строка // // Описание: // Дополняет передаваемую строку Стр символами Чем до строки длиной Длина // справа Функция глДополнитьСтрокуП(Стр,Чем,Длина) Экспорт Добавить=Длина-СтрДлина(Стр); Добавок=""; Для Сч = 1 По Добавить Цикл Добавок=Добавок+Чем; КонецЦикла; Возврат Стр+Добавок; КонецФункции //глДополнитьСтрокуП() Функция глКонтрольныйСимволEAN(ШтрКод, Тип) Экспорт Четн = 0; Нечетн = 0; Если Тип = 13 Тогда КолвоИтераций = 6; Иначе КолвоИтераций = 4; КонецЕсли; Для Индекс = 1 По КолвоИтераций Цикл Четн = Четн + Сред(ШтрКод, 2 * Индекс, 1); Нечетн = Нечетн + Сред(ШтрКод, 2 * Индекс - 1, 1); КонецЦикла; Если Тип = 13 Тогда Четн = Четн * 3; Иначе Нечетн = Нечетн * 3; КонецЕсли; КонтЦифра = 10 - (Четн + Нечетн) % 10; Возврат ?(КонтЦифра = 10, "0", Строка(КонтЦифра)); КонецФункции // глКонтрольныйСимволEAN() //****************************************************************************** // СтрокаВЦифры((Стр) // // Параметры: // Стр - Строка символов // // Возвращаемое значение: // строку, сосотоящую только из символов цифр. // Описание: // Из исходной строки переносит в результирующую строку символы, при этом, // если символ не является цифровым, то в результирующую строку переносится // символ цифры, который является самым правым в коде символа исходной строки. // Функция СимволыВЦифры(СтрСимв) Экспорт СтрЦифр = ""; Для Индекс = 1 По СтрДлина(СтрСимв) Цикл ТекСимв = Сред(СтрСимв, Индекс, 1); Если Найти("1234567890", ТекСимв) = 0 Тогда // преобразуем символ ТекСимв = Строка(КодСимвола(ТекСимв) % 10); КонецЕсли; СтрЦифр = СтрЦифр + ТекСимв; КонецЦикла; Возврат СтрЦифр; КонецФункции // СтрокаВЦифры() Функция глСформироватьШтрихкод(Префикс, ПредвКод, ТипКода=13) Экспорт Если ТипКода = 13 Тогда ИспКолво = 10; Иначе ИспКолво = 6; КонецЕсли; Штрихкод = СимволыВЦифры(Прав(СокрЛП(ПредвКод), ИспКолво)); Штрихкод = Префикс + глДополнитьСтрокуЛ(Штрихкод, "0", ИспКолво); Возврат Штрихкод + глКонтрольныйСимволEAN(Штрихкод, ТипКода); КонецФункции // глСформироватьШтрихкод() Вывожу штрихкод на печать шрифтом EanGnc через принтер штрихкодов. Сканером штрихкода полученное не читается. Где у меня ошибка? Стандартный вывод не работает, т.к. в конфе 2 идентичные dll для Win и Linux, а сервер у меня под Ubuntu. so файл, корректно работающий с 1С, я найти не смогла. Штрихкод формируется на сервере. |
|||
1
ИС-2
naïve
17.09.14
✎
11:11
|
а если попробовать не через компоненту, а через шрифт EanGnivc
http://infostart.ru/public/189520/ |
|||
2
Tellkira
17.09.14
✎
11:13
|
Простите, опечаталась в названии шрифта. Я им и вывожу
|
|||
3
User_Agronom
17.09.14
✎
11:14
|
(0) ...Сканером штрихкода полученное не читается...
Предположу: в макете размерчик маловат. |
|||
4
Tellkira
17.09.14
✎
11:17
|
Нет, масштабировала, экспериментировала с четкостью печати. Сейчас 6х3 см выводится.
Предполагаю, что проблема в префиксе, но как его формировать правильно, не в курсе: описания работы dll тоже не нашла. |
|||
5
User_Agronom
17.09.14
✎
11:19
|
(4) Без фотки не взлетит, конечно.
Но можно попробовать не формировать штрихкод, а сразу передавать правильный. Для эксперимента, убедится что с аппаратной частью всё в порядке. |
|||
6
Любопытная
17.09.14
✎
11:23
|
(4) А сканер вообще что-нибудь считывает? А то мож сканер не работает, а вы мучаетесь
|
|||
7
Tellkira
17.09.14
✎
11:24
|
User_Agronom, несколько не поняла Вашу мысль.
У меня штрихкод на документах ставится, потому и формирую самостоятельно. А с оборудованием всё в порядке: штрихкоды с коробок читает только в путь. |
|||
8
Любопытная
17.09.14
✎
11:28
|
(7) Должно работать нормально. Попробуйте прям с монитора шк считать, не печатая. Мож принтер плохо печатает. Пример набора цифр штрихкода получающегося дайте
|
|||
9
Tellkira
17.09.14
✎
11:33
|
Формируется примерно это: 0000000002974
С монитора тоже не читается. |
|||
10
Strogg
17.09.14
✎
11:36
|
контрольный символ косячит, имхо..
|
|||
11
User_Agronom
17.09.14
✎
11:39
|
(7) Сканер читает, что напечатано другими.
Нужно убедится, что ВАШ принтер ВАШИМ механизмом печатает корректно. Вместо штрихкода можно вообще абру-кадабру передать и штрихсканер её прочитает. Но без фотки и рецепта приготовления борща это всё равно работа впустую(( Не верите мне, спросите у Wobland |
|||
12
Tellkira
17.09.14
✎
11:48
|
(11) Верю-не верю, к делу не относится. Фото чего именно вы хотите и что имеете ввиду под "рецептом приготовления борща"?
|
|||
13
Любопытная
17.09.14
✎
11:52
|
(11) Это, по-моему, смотря какой сканер. (12) Сканер, кстати, какой? Со штрих-кодом все нормально, сканер должен его сожрать, если он в состоянии читать EAN13
|
|||
14
Любопытная
17.09.14
✎
11:53
|
(12) Фото это традиция. Как и борщ)
|
|||
15
Балоун
17.09.14
✎
11:54
|
(14) меня хоть бы кто борщом покормил.. но я согласен и на творог с перцем ;)
|
|||
16
Tellkira
17.09.14
✎
11:55
|
(13) Сканер Posiflex Honeywell, настройка через эмуляцию com-порта.
Я новичок, не в курсе фото и борщей. |
|||
17
Балоун
17.09.14
✎
11:56
|
(16) без фото не взлетает никогда, как ни старайся
|
|||
18
Любопытная
17.09.14
✎
11:57
|
(16) А если включить его просто клавиатурным?
Клавиатурному сканеру уж точно должно быть плевать, что у вас там написано, он считает и выведет |
|||
19
Любопытная
17.09.14
✎
11:59
|
(15) Вы слишком много знаете для незнакомца ;)
|
|||
20
Балоун
17.09.14
✎
12:00
|
(19) отличный повод исправить положение незнакомца ;)
|
|||
21
Tellkira
17.09.14
✎
12:01
|
(18) Клавиатурный вариант тоже не читает.
|
|||
22
Любопытная
17.09.14
✎
12:01
|
(20) Еще чуть-чуть и этот ник тоже забанят за флуд
|
|||
23
Любопытная
17.09.14
✎
12:02
|
(21) Тогда давайте разбираться куда он не читает. Не читает в 1С или вообще?
|
|||
24
Любопытная
17.09.14
✎
12:03
|
Я считаю, что дело не в сформированном штрихкоде, а в оборудовании
|
|||
25
Балоун
17.09.14
✎
12:03
|
(22) а их войско
|
|||
26
Любопытная
17.09.14
✎
12:03
|
(25) Лучше помоги девушке
|
|||
27
Балоун
17.09.14
✎
12:04
|
чем вы тут занимаетесь вообще? исправность сканера (клавиатурного) проверяется сканированием в блокнтом пачки сигарет
|
|||
28
Tellkira
17.09.14
✎
12:05
|
(24) мои штрихкоды он не читает даже в тесте. Сигаретные пачки сканирует норм.
|
|||
29
Любопытная
17.09.14
✎
12:05
|
(27) Сканер с коробки читает, а сгенерированное не читает. Не должно ли сканеру быть пофиг, какие там палки? Клавиатурному по-моему должно
|
|||
30
Балоун
17.09.14
✎
12:06
|
(28) фотку вставляла? контрольную цифру проверяла?
|
|||
31
Балоун
17.09.14
✎
12:08
|
(29) родное правительство как-то перед выборами выдало нескольким конторам скидочные карты для пенсионеров. единый штрихкод на всех-всех-всех и с кривой контрольной цифрой ;)
|
|||
32
Балоун
17.09.14
✎
12:08
|
+(31) так вот, у нас вроде бывал клавиатурный. допиливали конфигурацию
|
|||
33
Любопытная
17.09.14
✎
12:09
|
(31) я проверяла контрольную цифру из (9) Правильно. Говорят сделано в США или Канаде ;)
|
|||
34
Tellkira
17.09.14
✎
12:14
|
(30) Я вставляю не фото, а вывожу сразу шрифтом. У меня нет so, который бы формировал этот штрихкод. Контрольная цифра верна, префикс - 0, с префиксом 2 тоже не читает.
|
|||
35
Балоун
17.09.14
✎
12:16
|
фото вставляется здесь: http://www.forum.mista.ru/users_photo.php?id=99250
|
|||
36
Любопытная
17.09.14
✎
12:18
|
(34) А вы прям шк из (9) мучаете? У меня сканера нет под рукой, чтоб проверить, но по идее должен считаться.
|
|||
37
Любопытная
17.09.14
✎
12:18
|
А если напечатать на принтере шк с пачки сигарет, прочитается?
|
|||
38
Любопытная
17.09.14
✎
12:21
|
В штрихкодах вся соль в контрольной цифре и только в ней. Если контрольная цифра посчитана правильно, то он должен считаться.
|
|||
39
Tellkira
17.09.14
✎
13:08
|
Решила проблему.
Я вывожу на печать просто цифры. А штрихкод - штука не такая простая. Не хватало одной функции, обрабатывающей штрихкод перед печатью. Функция ПолучитьЕАН13НаПечать (ШтрихкодСтрокойСимволов) Экспорт Попытка Тест = Число(ШтрихкодСтрокойСимволов); Исключение ВызватьИсключение "Штрихкод может содержать только цифры"; КонецПопытки; СимволыСпособовКодирования = "#$%&'()*+,"; ЛевыйЗащитныйШаблон = "!"; СреднийЗащитныйШаблон = "-"; ПравыйЗащитныйШаблон = "!"; СимволыШрифтаПоТипамКодов = Новый Соответствие; СимволыШрифтаПоТипамКодов.Вставить("L", "0123456789"); СимволыШрифтаПоТипамКодов.Вставить("G", "ABCDEFGHIJ"); СимволыШрифтаПоТипамКодов.Вставить("R", "abcdefghij"); СпособыКодированияЛевойЧасти = Новый Массив; СпособыКодированияЛевойЧасти.Добавить("LLLLLL"); СпособыКодированияЛевойЧасти.Добавить("LLGLLG"); СпособыКодированияЛевойЧасти.Добавить("LLGGLG"); СпособыКодированияЛевойЧасти.Добавить("LLGGGL"); СпособыКодированияЛевойЧасти.Добавить("LGLLGG"); СпособыКодированияЛевойЧасти.Добавить("LGGLLG"); СпособыКодированияЛевойЧасти.Добавить("LGGGLL"); СпособыКодированияЛевойЧасти.Добавить("LGLGLG"); СпособыКодированияЛевойЧасти.Добавить("LGLGGL"); СпособыКодированияЛевойЧасти.Добавить("LGGLGL"); СпособКодированияПравойЧасти = "RRRRRR"; Если СтрДлина(ШтрихкодСтрокойСимволов) = 13 Тогда КоличествоСимволовВГруппе = 6; ИначеЕсли СтрДлина(ШтрихкодСтрокойСимволов) = 8 Тогда КоличествоСимволовВГруппе = 4; СимволыСпособовКодирования = ""; ШтрихкодСтрокойСимволов = "0"+ШтрихкодСтрокойСимволов; Иначе ВызватьИсключение "Поддерживаются только штрихкоды длиной 13 и 8 символов"; КонецЕсли; ИндексСпособаКодирования = Число(Лев(ШтрихкодСтрокойСимволов,1)); ЛеваяЧастьКода = ""; ПраваяЧастьКода = ""; Для ИндексСимвола = 1 По КоличествоСимволовВГруппе Цикл ЛеваяЧастьКода = ЛеваяЧастьКода + Сред(СимволыШрифтаПоТипамКодов[Сред(СпособыКодированияЛевойЧасти[ИндексСпособаКодирования],ИндексСимвола,1)] ,Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола+1),1))+1 ,1); ПраваяЧастьКода = ПраваяЧастьКода + Сред(СимволыШрифтаПоТипамКодов[Сред(СпособКодированияПравойЧасти,ИндексСимвола,1)] ,Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола+КоличествоСимволовВГруппе+1),1))+1 ,1); КонецЦикла; Результат = "" + Сред(СимволыСпособовКодирования,ИндексСпособаКодирования+1,1) + ЛевыйЗащитныйШаблон + ЛеваяЧастьКода + СреднийЗащитныйШаблон + ПраваяЧастьКода + ПравыйЗащитныйШаблон; Возврат Результат; КонецФункции |
|||
40
Tellkira
17.09.14
✎
13:09
|
Спасибо всем :-)
|
|||
41
Любопытная
17.09.14
✎
13:10
|
Жесть какая. И что в итоге выдает эта функция на выходе?
|
|||
42
Балоун
17.09.14
✎
13:11
|
(40) спасибу на рабочий стол не положишь
|
|||
43
Балоун
17.09.14
✎
13:13
|
(41) что-то явно длиннее 13 символов при ЕАН13
|
|||
44
Балоун
17.09.14
✎
13:14
|
(43) или неявно. или контрольная цифра так хитро считается
|
|||
45
Любопытная
17.09.14
✎
13:14
|
(42) Ты чем-нибудь помог, чтоб намекать на борщ?)
|
|||
46
Балоун
17.09.14
✎
13:14
|
(45) я готов покушать безвозмездно
|
|||
47
User_Agronom
17.09.14
✎
13:51
|
(12) Фото чего именно вы хотите и что имеете ввиду под "рецептом приготовления борща"?
Да, загадочно всё это. Особенно неизведанная вещь под названием "рецепт приготовления борща". |
|||
48
Tellkira
17.09.14
✎
21:19
|
(47) Эх. Вот вам рецепт приготовления борща:
Покупаем в магазине мозговые кости, желательно кусок позвоночника и пару коленных. Вывариваем их на слабом огне в подсоленной воде полдня. Затем достаём то, что осталось от костей, соскребаем с них мясо (можно его положить в бульон) и кидаем в бульон пару очищенных и нарезанных свёколок. Варим с час. Дальше кидаем картошку, капусту (не обязательно, но мне нравится), лук, морковку. Всё, естественно, порезанное. Досаливаем, перчим и варим с полчасика. Потом кидаем лавровый лист, прочие приправы по вкусу и через 5 минут выключаем. Лопать со сметаной. |
|||
49
Torquader
17.09.14
✎
22:46
|
(48) Вот если бы вы также подходили к вопросу печати штрих-кода, то у вас бы всё сразу получилось.
|
|||
50
User_Agronom
17.09.14
✎
23:59
|
(48) Незачет. Фото можно не ставить.
Таким борщём можно удовлетворить молодого студента, но никак не старого, седого одинэсника. |
|||
51
acanta
18.09.14
✎
00:06
|
(50) молодого студента тоже не удовлетворишь
|
|||
52
acanta
18.09.14
✎
00:07
|
(51)+ разве что сантехника из ЖЭКа..
|
|||
53
User_Agronom
18.09.14
✎
00:21
|
(51) Pardon, поправлюсь:
Таким борщём может и есть шанс удовлетворить молодого студента, но никак не старого, седого одинэсника. Давно студеном был, подзабыл.)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |