Имя: Пароль:
1C
 
Вывод на печать GS1 128
0 Shalun
 
naïve
06.09.25
09:01
Всем привет!Люди, кто сталкивался с выводом на печать SSCC кода? А точнее, с формированием картинки?
Код формируется вроде правильно: 00 1 123456789 0000001 9, разумеется без пробелов, это для наглядности.
Получаю картинку: ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода)
В параметрах ставлю ТипШК = 4 (пробовал 2) - выводит совершенно не то. Точней выводит именно CODE128 а не GS1 128. Соответственно, сканер его не читают. Везде пишут что это одно и то же, но как видно, все же не одно и то же.
Отсюда вопрос, как получить изображение именно в GS1 128  формате.
1 lEvGl
 
гуру
06.09.25
09:17
если речь про вк 1с, то в описании все
https://its.1c.ru/db/metod8dev/content/5963/hdoc
4 это code128
2 Shalun
 
naïve
06.09.25
10:01
(1) Спасибо бро, разобрался! Тип кода 2 то же ставил - не помогало. Оказывается код со скобками нужно передавать (00) 1 123456789 0000001 9, а не как везде пишут, без. Со скобками все норм! Спасибо!
3 Shalun
 
naïve
06.09.25
10:23
(1) Может за одно подскажешь по печати DataMatrix?
Задаю полный кодМаркировки из пула кодов, я так понимаю в формате base64 (MDEwNDY4...) Тип кода ставлю 24. При сканировании выдает ошибку, отсутствие признака GS1. Но как сказано в описании, компонента сама добавляет эти признаки, в том числе и FNC1. Что с этим не так, не подскажешь?
Может сам код не правильно передаю? Он в виде строки, а его может как то по другому нужно передавать? Но вроде, компонента сама его преобразует...
4 ejikbeznojek
 
06.09.25
14:14
(3) Нет, неправильно понимаешь. Не в формате base64. Нужен полный код в человеческом виде.
И добавляется вроде только FNC1, а GS1 это уже сам...символами (29) что-ли
5 Shalun
 
naïve
06.09.25
14:50
(4) Почитайте по ссылке выше, что привет (1). Цитирую: "...компонент интерпретирует строку как код GS1, раскрывает скобки, добавляет символ GS в конце каждой группы переменной длины и генерирует изображение, добавив графический символ начала кода FNC1."
И еще
"допускается две формы ввода:
1.В виде Строки.
2.В виде Строки Base64."

Т.е. получается не правильно написали? А как формируете вы, посоветуйте.
6 NorthWind
 
06.09.25
15:26
(0) по известным данным строите код в генераторе штрих-кодов. Их много в сети. Далее строите в своей системе и сравниваете штрихи просто визуально по соотношению толщин. Как совпало - значит, с большой вероятностью оно. В качестве SSCC мне в свое время подошел  EAN-128 из того, что было доступно. CODE128 похож, но не совсем то же самое.
7 ejikbeznojek
 
06.09.25
16:16
Чёт обманул. Таки base64 тоже можно
https://annotatescreen.com/d/EgC9HbQU2UtX9KkdOscn.png

Убедись только что в раскодированном коде есть все нужные символы
стрнайти(ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(параметрыштрихкода.штрихкод)),символ(29))
у меня возвращает 32
8 Shalun
 
naïve
06.09.25
21:14
(6) Да, спасибо, именно EAN128 нужен (тип ШК - 2) и со скобками! Тогда формирует верно!
9 Shalun
 
naïve
06.09.25
21:17
(7) в смысле 32 возвращает? :-( У тебя че, в коде 32 DS символа? :-) Их там 2, максимум 3 должно быть.
А вот на счет проверить эт ты правильно подсказал, я чет не додумался.
10 Shalun
 
naïve
06.09.25
21:42
(7) Я все туплю. Это у тебя первый символ на 32 позиции. У меня на 25, всего 2 таких символа в строке. Т.е. вроде все верно, но печатает что-то не то.
11 MWWRuza
 
гуру
06.09.25
21:53
Я не пойму... А за чем вообще все эти извращения? Почему не напечатать родной для маркировки DataMatrix - ? Или эта компонета этого не умеет? Или сканер только 1D читает? Раскройте секрет...
12 ejikbeznojek
 
06.09.25
23:04
(11) так у меня так и печатается. Gs1 data matrix
13 NorthWind
 
06.09.25
23:29
(8) как я понял, SSSC это разновидность gs1-128, в котором нет AI переменной длины, там просто единственный AI и он фиксированной длины. А раз их нет, значит, символ GS не используется - таким образом, EAN128 должен подойти.
14 Shalun
 
naïve
07.09.25
13:14
(11) SSCC это код упаковки, DataMatrix - код продукта.
А вот почему эта компонета не тот код выводит при печати DataMatrix я и пытаюсь понять.
15 Shalun
 
naïve
07.09.25
13:16
(12) А ты можешь скинуть строку кода, которую ты передаешь в компоненту для печати? Попробую у себя напечатать. Хотя понятно будет, или функцию коряво запускаю, либо данные не те.
16 Shalun
 
naïve
07.09.25
13:19
(13) Это понятно. Просто в функцию AI нужно в скобках передавать, иначе не то рисует.
17 MWWRuza
 
гуру
07.09.25
13:56
OFFTOP:
Боже, как все сложно... Не даром говорят, что "восьмерка еще сырая!" :-)))
Я в клюшках своей обработкой печатаю, DM на остатки марок, вообще без проблем, через FormEx:
Вот:


Все символы GS на месте, это строка прилетевшая со сканера:



В ЧЗ проверяется на раз, в том числе и мобильным приложением.
(нет, эти конкретные марки не проверятся, так, как давно проданы клиентом, не из-за структуры ШК, а из-за того, что выведены из оборота)...
18 Shalun
 
naïve
07.09.25
14:24
(17) Молодец!
19 Shalun
 
naïve
07.09.25
14:33
(17) И кстати, у тебя вместо GS используется FNC1.
20 MWWRuza
 
гуру
07.09.25
15:01
Ну, да, формат DM FNC1, разделители групп GS. Первый символ там FNC1, просто он не отображается в строке прилетевшей со сканера, так, как используется сканером как управляющий, типа сообщает ему, что дальше в строке данных будет.
Как-бы так прописано в МР по маркировке... Проверку формата в ЧЗ проходит без ошибок. У производителей, которых видел, так-же.

PS "вместо GS используется FNC1" - тут вопрос, что нужно получить в итоге - марку, проходящую проверку в ЦРПТ, или именно GS для каких-то других целей...
21 Shalun
 
naïve
07.09.25
15:20
(20) Если я не ошибаюсь, то GS такой же нечитаемый символ как и FNC1. Почему они у тебя отображаются - не понятно. Не, ну если проверку проходят, то и ладно. Хотя, если отключить проверку структуры кода - будет читать и ошибочные коды, там не вся строка используется. Но я ни в коем случае не настаиваю, просто есть много программ, позволяющих проверять структуру кода и выявлять ошибки. Попробуй отсканировать свои коды, проверить. Если интересно конечно же.
22 MWWRuza
 
гуру
07.09.25
16:44
(21) Почему они у тебя отображаются - не понятно.

По тому, что они там есть. Это строка сохраненная именно с моей марки(да пох, можно взять и от производителя, любую) со сканера в режиме эмуляции COM-порта, без "медвежьих услуг" драйвера клавиатурных сканеров и обработки в программе, по замене "чего-то на что-то", без добавления/удаления скобок и т.п., как есть. Они есть в строке кода, прилетевшего со сканера, поэтому и отображаются. Естественно, программой, которая это умеет(в данном случае - Notepad++) - если открыть обычным виндовым блокнотом, то их естественно видно не будет. FNC1 там тоже есть, первым символом идет, но, он не отображается(даже Notepadom++, или терминалом, ловящим строку данных из COM-порта), так, как интерпретируется сканером как управляющий, сообщающий сканеру, чего дальше ожидать в строке данных, и не передается в строку данных.
Немного "утрированно", но, общий принцип такой.
23 MWWRuza
 
гуру
07.09.25
16:49
+(22) то их естественно видно не будет

Но, даже в обычном блокноте, если курсорными клавишами-стрелками двигать курсор - можно заметить, что на местах, где они есть, происходит "типа задержка", пропуск нажатия, так, как символ там есть, его "проскочить" нужно, но его не видно.
24 ejikbeznojek
 
07.09.25
19:44
Gs можно самому пихать в строку, а fnc1 вроде нет.
По крайней мере в zpl точно.
По идее компонента сама должна добавлять.
25 Shalun
 
naïve
08.09.25
10:55
(23) все верно, курсор остается на месте, но самого символа не видно!
(24) fnc1 то же - Символ(232).
26 MWWRuza
 
гуру
08.09.25
10:57
(25) но самого символа не видно!

Еще раз - используйте Notepad++, и все увидите.
27 Shalun
 
naïve
08.09.25
11:00
В общем, методом проб и ошибок победил! В противовес описанному в статье по утилите 1с, из dfse64 нихрена не формирует. Точней, формирует какую то хрень. Перевел в обычную строку, и он напечатал!
Кому интересно:
ПараметрыШтрихкода.ТипКода = 24;
ПараметрыШтрихкода.Штрихкод = ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(КодМаркировкиbase64));
РезультатШтрихкод = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
AdBlock убивает бесплатный контент. 1Сергей