|
v7: Можно ли в 1с 7.7 работать со штрих-кодами длиной больше 13 символов ? | ☑ | ||
---|---|---|---|---|
0
tgu82
04.09.17
✎
17:27
|
ТИС 7.7
С ЕАН-13 у меня все в порядке, но мне надо как-то сканировать ШК в которых куда больше информации и в 13 символов я уже не укладываюсь. И кроме того нужно печатать такие ШК на документах чтобы потом их сканировать. Например мне нужно чтобы в ШК были номера и даты нескольких документов для того чтобы сканировать "групповой документ". |
|||
1
Джинн
04.09.17
✎
17:32
|
Можно
|
|||
2
Cthulhu
04.09.17
✎
18:35
|
qr
|
|||
3
mishaPH
модератор
04.09.17
✎
18:36
|
(0) открой баркоде компоненту и посмотри список шрифтов.
ты вообще про коде128А говоришь. |
|||
4
tgu82
04.09.17
✎
20:06
|
(3)Я вроде кроме ЕАН-13 в ней ничего не видел. Просто если взять qr-код - он как-то последовательностью символов выражается?
|
|||
5
Cthulhu
04.09.17
✎
20:28
|
(4):
Максимальное количество символов, которые помещаются в один QR-код: цифры десятичной системы счисления — 7089; цифры десятичной системы счисления и буквы (латиница) — 4296; двоичный код — 2953 байт (следовательно, около 2953 букв кириллицы в кодировке windows-1251 или около 1450 букв кириллицы в utf-8); иероглифы — 1817. |
|||
6
tgu82
04.09.17
✎
20:59
|
Прочел вот это: Как напечатать штрихкод Code-128
Стало понятнее. Просто еан-13 работал и голову не ломал однако ) |
|||
7
NorthWind
04.09.17
✎
22:12
|
(0) конечно, можно. Проблема только в том, что ТИС штатно не поддерживает такие коды, поэтому обработку данных внешнего события при получении такого кода вам придется дописать. Также как и формирование кода на печать.
|
|||
8
mishaPH
модератор
04.09.17
✎
22:16
|
(4) а причем тут qr код.
|
|||
9
tgu82
05.09.17
✎
09:23
|
(8) Ну вообще-то он более компактно размещается при печати чем 128-сиимольный штрих-код. Ну и потом я думал что есть как бы уникальный идентиификатор qr-кода, который можно формировать по каким-то правилам и засовывать в базу при необходимости
|
|||
10
Злопчинский
05.09.17
✎
12:23
|
Инфу по шк пихай в отдельный справочник
А код этого справочника или иной ид записи - кодируй простым еан13 |
|||
11
tgu82
05.09.17
✎
12:35
|
(10) Классное решение, вот только по какому принципу кодировать код в ЕАН-13? Это ж не датчик случайных чисел )
|
|||
12
ADirks
05.09.17
✎
12:41
|
(10) блин... а я недавно фигнёй страдал, как запихать всё в EAN13 :))
(11) МДВ = СоздатьОбъект("MetaDataWork"); ШК = МДВ.ЗначениеВСтрокуБД(спрШК.ТекущийЭлемент()); |
|||
13
tgu82
05.09.17
✎
12:48
|
(12) Это же 1С++. И что он создаст готовый штрих-код?
|
|||
14
ADirks
05.09.17
✎
12:57
|
(13) ШК - это, грубо говоря, просто строка символов. Метод ЗначениеВСтрокуБД() возвращает внутренний ИД объекта, в формате char(9), и этого вполне достаточно. Спереди можно ещё прилепить префикс с видом ШК (вид печатной формы, например).
|
|||
15
tgu82
05.09.17
✎
13:03
|
(14) Да. Я попробовал. Вот только ___OVZЦБ мне как в цифры переводить? В ЕАН-13 только цифры и есть. По коду символа не получится, так как код символа может быть и 2 и 202.
|
|||
16
ADirks
05.09.17
✎
13:08
|
а, ну да, цыферки же...
вот, почти типовой кусок Функция КонтрольноеЧислоЕАН(ШК) Экспорт Чет = 0; Нечет = 0; Если (СтрДлина(ШК) = 12) или (СтрДлина(ШК) = 13) Тогда Для й = 1 По 6 Цикл Нечет = Нечет + Число(Сред(ШК, 2*й - 1, 1)); Чет = Чет + Число(Сред(ШК, 2*й, 1)); КонецЦикла; Возврат (10 - (Нечет + Чет*3)%10)%10; ИначеЕсли (СтрДлина(ШК) = 7) Или (СтрДлина(ШК) = 8) Тогда Для й = 1 По 3 Цикл Нечет = Нечет + Число(Сред(ШК, 2*й - 1, 1)); Чет = Чет + Число(Сред(ШК, 2*й, 1)); КонецЦикла; Нечет = Нечет + Число(Сред(ШК, 7, 1)); Возврат (10 - (Нечет*3 + Чет)%10)%10; КонецЕсли; КонецФункции Функция СформироватьШтрихкод(Объект, Знач Префикс = "") Экспорт Если ТипЗначения(Объект) = 1 Тогда Код = Объект; ИначеЕсли ТипЗначения(Объект) = 2 Тогда Код = _StrToId(СокрЛП(Объект)); Иначе Код = _StrToId(СокрЛП(РадугаСервис.ЗначениеВСтрокуБД(Объект))); КонецЕсли; стрШтрихкод = Префикс + Прав("000000000000" + Код, 12 - СтрДлина(Префикс)); Возврат стрШтрихкод + КонтрольноеЧислоЕАН(стрШтрихкод); КонецФункции |
|||
17
tgu82
05.09.17
✎
13:28
|
(16) Только я вот выбрал номенклатуру и он мне частенько _StrToID(ТекЭлем) выдает 1 и все, хотя для другой может и 95454 и -121241233123.
Как-то мало предсказуемо что он мне даст |
|||
18
ADirks
05.09.17
✎
13:31
|
не ТекЭлем, а мдв.ЗначениеВСтрокуБД(ТекЭлем)
или можно ЗначениеВСтрокуВнутр(ТекЭлем), и оттуда цыферки вынуть |
|||
19
tgu82
05.09.17
✎
13:45
|
(18) Да пробовал я по-всякому - не работает. Символьную строку создает. а вот дальше ни фига не получается.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |