Имя: Пароль:
1C
1C 7.7
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) Да пробовал я по-всякому - не работает. Символьную строку создает. а вот дальше ни фига не получается.