Имя: Пароль:
1C
1C 7.7
v7: Генерировать штрихкод GS1-128 в 1с77
, ,
0 saksaul
 
16.12.19
08:21
Платформа 27
База файловая.
Надо генерировать штрихкод формата GS1-128.
Что пытался использовать:
штрифты
Eangvic - этот формат не поддерживает
Code128 - этот формат не поддерживает
Barcode - этот формат не поддерживает

компонента OcvitaBarcode.ocx - вылетает 1с77 как только ставишь нужный вид штрихкода...
вот тут QR код В 1С 7.7 эта проблема озвучивалась, но печать без предпросмотра ничего не дает - тоже вылетает
1 saksaul
 
16.12.19
08:22
ссылку перепутал... Почему крашится OcvitaBarcode?...
2 Fragster
 
гуру
16.12.19
08:26
zint
3 NorthWind
 
16.12.19
08:43
(0) В некоторых случаях можно использовать EAN128 из ActiveBarcode.
Но не будет скобочек в HRC, и по-моему, там нельзя вкрячить FNC1, т.е. можно использовать только для AI постоянной длины.
Для SSCC я использовал, прокатывало.
4 saksaul
 
16.12.19
08:49
(3) У меня как раз два последних поля переменной длины
5 Strogg
 
16.12.19
08:50
(0)У нас принтер Godex, я печатаю с помощью EZPL. Формирую строку шаблона EZPL и отправляю его на принтер.
(3 Как правило, без FNC1 не взлетает, ибо заказчикам из-за этого как раз и нужен ГС1.
6 saksaul
 
16.12.19
08:52
(5)У меня такой же! Надо попробвать
7 Strogg
 
16.12.19
08:58
(6) пробоуй. Предварительно я нарисовал в GoLabel шаблон, получил его строку в формате EZPL. Затем, обязательно надо сделать принтер сетевым, чтобы потом расшарить его и навесить на какой-нибудь LPT2 с помощью net use. Ну и не забудь предварительно загрузить в принтер требуемую кодовую страницу и необходимые изображения (в случае, если они есть) с корректными именами.
Короче, гемор еще тот...
8 big
 
16.12.19
09:52
Вот здесь паренёк довольно подробно описывает.
http://cs-cs.net/markirovka-auto-1c-labels
9 saksaul
 
16.12.19
10:14
(7) Э... я думал как-то проще делается) Ну будем осваивать все варианты. Спасибо.
\
10 Strogg
 
16.12.19
10:20
(9) я пробовал всякие варианты. Наверное, судя по (8) изобретал велосипед, но на этом остановились как на самом оптимальном варианте. Что уж о 7.7 говорить, 1С до сих пор и для 8 не удосужились сделать вменяемую компоненту печати ШК ГС1...
11 saksaul
 
16.12.19
10:24
(10) А Zint чем не подошел?
12 MWWRuza
 
гуру
16.12.19
10:28
Вообще, сейчас новый FormEx печать ШК поддерживает, тоже на основе Zint...
Кстати, и OcvitaBarcode.ocx у меня работает и не крашится, во многих местах и с разными 1D и 2D ШК... Что я не так делаю?
13 Strogg
 
16.12.19
10:29
(11) я уже не помню. Дело было 2 года назад. То ли 1С валился, то ли недоразобрались... Так же как и с оквитой...
14 Fragster
 
гуру
16.12.19
10:36
(13) зинт раобтае тиз командной строки, 1с от этого не падает :)
15 ptiz
 
16.12.19
10:43
(0) "GS1-128 (ранее также назывался: UCC-128 или EAN-128) формат штрихкода глобальной организации по стандартизации GS1, предназначенный для передачи информации о грузе между предприятиями. В формате регламентирован словарь (Code-128) и группы кодов, но не регламентирована длина."

Как это Code-128 не поддерживает?
16 saksaul
 
16.12.19
12:11
(15) Я в формате устанавливаю шрифт Code128 и в итоге сканер не читает полученный штрихкод, вставляю передаваемую строку в генератор GS1-128 и получаю читаемый сканером штрихкод. Есть какие-то параметры о которых может быть я не знаю?
17 ptiz
 
16.12.19
12:20
(16) Проблемы со спецсимволами или чем-то еще? Что именно "портится"?
18 saksaul
 
16.12.19
13:18
(17) Спецсимволы не генерируются при передаче строки и сам штрихкод вообще не читается сканером - значит и сформирован не верно.
19 ptiz
 
16.12.19
13:19
(18) Дай пример строки штрихкода.
20 saksaul
 
16.12.19
13:28
014607041741532310300252011011219100010112192100001 - передается вот так
21 saksaul
 
16.12.19
13:29
служебный символ не видно, но если скопировать он есть
22 ptiz
 
16.12.19
13:46
(20) Зачем это кодировать в code-128? Из датаматрикса же взял? Признавайся :)
23 Strogg
 
16.12.19
13:51
(20) Перед GTINом 0 поставь. Первый блок должен содержать 14 символов :). На какого-то ритейлера весовые короба отгружаешь, небось? Судя по набору блоков, очень похоже)))
24 saksaul
 
16.12.19
14:06
Я смотрю на образец предоставленный покупателем и там перед GTIN стоит AI= 01
Короче это должно в итоге вот так быть
(01)4607041741532(3103)002520(11)011219(10)001011219(21)00001
25 saksaul
 
16.12.19
14:07
Ориентируюсь на вот это https://strokescribe.com/ru/gs1-128-ean-128.html
и это http://www.gs1ru.org/datacapture/
26 ptiz
 
16.12.19
14:07
(24) А тут спецсимволы должны быть? Если просто строка - не должно быть проблем.
27 saksaul
 
16.12.19
14:07
Там же в стандарте сказано что скобки не надо указывать в передаваемой строке
28 saksaul
 
16.12.19
14:09
(26) Вроде оно само должно распознаваться... В генераторе https://www.terryburton.co.uk/barcodewriter/generator/
просто передаю строку без скобой и служебных и получется считываемый код
29 saksaul
 
16.12.19
14:12
Вот так было в коде:
ШтрихкодПартии = "01"+GTIN+"3103"+ВесВКод+"11"+ДатаВыпускаВКод+"10"+НомерПартииВКод+"21"+Строка(НомерКоробкиВКод);
30 Strogg
 
16.12.19
14:14
(24) 01 блок имеет длину 14 символов. Т.е. "0" + твой GTIN. В общем случае в представленной структуре, 10 блок предполагает символ FNC1 и 21 блок предполагает символ FNC1.
31 saksaul
 
16.12.19
14:25
(30) ок, завтра пересмотрю. Спасибо за корректировки
32 Fragster
 
гуру
16.12.19
14:28
https://imgur.com/SZ1ct9U читается?
33 Fragster
 
гуру
16.12.19
14:28
только там зазумить надо, чтобы края не мылило
34 Strogg
 
16.12.19
14:35
(31) пожалуйста. Вот тут общие спецификации для GS1 найдешь. http://www.gs1ru.org/wp-content/uploads/2017/02/СТО-5_V4.pdf
35 NorthWind
 
16.12.19
20:45
(12) не так то, что вы это в семерке делаете, а не в свежих релизах восьмерки
36 NorthWind
 
16.12.19
20:48
хотя здесь вроде тоже семерка... тогда странно
37 timurhv
 
16.12.19
21:26
(0) Можно один раз поковыряться и использовать Jasper, в конце ссылки.
https://xdd.silverbulleters.org/t/pechatnye-formy-bol/1168/7
38 MWWRuza
 
гуру
16.12.19
22:08
(35)это в семерке делаете, а не в свежих релизах восьмерки

А при чем ФормЕкс, и восьмерка?

Метод НарисоватьШтрихкод() - v7: Обновление FormEx. Версия 2.5.0.115 - рисует штрих-код заданного типа на объекте "Картинка" с помощью библиотеки zint;
39 MWWRuza
 
гуру
16.12.19
22:10
40 saksaul
 
17.12.19
05:21
(38) Знаю про это, но обновить формикс мне не разрешают
41 mishaPH
 
модератор
17.12.19
07:14
(0) я использую строке скрайбе
42 mishaPH
 
модератор
17.12.19
07:15
(29) там стоп символы надо добавлять
43 mishaPH
 
модератор
17.12.19
07:16
Если КодМеркурийВид = 1 Тогда
                            КодТР = "01" +ШтрихКодА+"3103"+ВесТовара+"11"+датаПр+"17"+датаГоденДо+"10"+ПартияКодМ+Симв(29)+"21"+ТекНомУпак+Симв(29);    
                        ИначеЕсли КодМеркурийВид = 2 Тогда
                            КодТР = "01" +ШтрихКодА+"3103"+ВесТовара+"11"+датаПр+"10"+ПартияКодМ+Симв(29);        
                        ИначеЕсли КодМеркурийВид = 3 Тогда
                            КодТР = "01" +ШтрихКодА+"3103"+ВесТовара+"10"+ПартияКодМ+Симв(29)+"11"+датаПр+"17"+датаГоденДо;        
                        КонецЕсли;
44 victuan1
 
17.12.19
07:32
45 saksaul
 
18.12.19
05:49
(32) Читается правильно
46 saksaul
 
18.12.19
12:28
(7) Шаблон этикетки я сделал, но как его теперь из 1с вызвать чтобы заменить нужные места на значения например наименования номенклатуры пока не дошло. Файл который получается в GoLable  - это что-то типа xml.
Можно подробнее что значит "получил его в строку"?
ВСтрокуСРазделителями()???
47 NorthWind
 
18.12.19
12:52
(46) это точно не должен быть XML. Нужно сделать выгрузку на EZPL. Это такие строчки, которые начинаются с ^.
48 Strogg
 
18.12.19
13:06
(46) Это и есть EZPL.
Должно получиться что-то вроде вот этого:
Q140,3
^W70
^H3
^P1
^S5
^AD
^C1
^R24
~Q+8
^O0
^D0
^E12
~R255
^XSET,ROTATION,0
^L
Dy2-me-dd
Th:m:s
Y2,852,Image26
Y215,128,Image6
Y128,122,Image5
Y79,126,Image4
Y230,209,Image3
Y137,199,Image2
B55,412,1093,2,4,24,3,0,01046800044600153103015220111808181717081910012291812230&G2125005&G
BE,337,126,3,8,80,2,1,2800729152206
AE,19,237,1,1,0,3,%%Параметр1%%
AB,484,1028,1,1,0,3,(01)04680004460015(3103)015220(11)180818(17)170819(10)012291812230(21)25005
R12,135,67,247,4,4
AC,0,788,1,1,0,3E,%%Текст1%%
...(т.п.)
E
Далее, сохраняешь его в текстовик а из 1С его открываешь и заменяешь параметры (%%Параметр1%%, %%Текст1%%)..... своими с помощью СтрЗаменить(). Штрихкод и текст штрихкода я оставил как пример - он тоже в параметре будет передаваться.
Таким образом, ты получаешь готовый файл к отправке на принтер. Я печатаю с помощью copy to Lpt2, предварительно настроив его Net Use-ом.
49 saksaul
 
18.12.19
13:14
(47) в GoLable есть только возможность выгрузить *.ezpx
(48) это я уже понял, даже уже код написан для этого (за исключением команды печати)
а вот как *.ezpx перевести в EZPL... пока не ясно, ну будем читать
50 Strogg
 
18.12.19
13:19
(49) еще раз. Ничего не надо переводить.
ПутьКШаблону = СокрЛП(Константа.КаталогЭтикетки);
ТекстШаблона = СоздатьОбъект("Текст");
ТекстШаблона.Открыть(ПутьКШаблону + "\" + "Label140x70.cmd");
Это текст этикетки.
   строкаШтрихкода = ТекстШаблона.ПолучитьСтроку(34);
   СтрокаШтрихКода = стрЗаменить(СтрокаШтрихкода, "%%Наименование1%%", Наим1);
   ТекстШаблона.ЗаменитьСтроку(34, СтрокаШтрихкода);
...заменяешь все переменные в шаблоне.
ТекстШаблона.Записать(ПутьКШаблону + "\" + "LabelPrint.txt");
и записываешь готовый к печати шаблон
после записи я сделал так:
ЗапуститьПриложение(ПутьКШаблону + "\" + "print.cmd");
В файлике print.cmd находится что-то типа
echo off
copy to lpt2 c:\Label\Labelprint.cmd
51 saksaul
 
18.12.19
13:24
Ура! Я нашел эту панельку "Окно команд" ))
52 saksaul
 
19.12.19
11:25
(50) в строке вызова шаблона ошибка (для тех кто будет эту тему читать)
Надо: copy c:\Label\Labelprint.cmd to lpt2
53 saksaul
 
19.12.19
12:41
(52) copy c:\Label\Labelprint.cmd lpt2
вот так правильно
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.