Маркировка весовой, упаковочной и логистической продукции часто требует размещения большого объема данных в компактном штрихкоде. Стандарты GS1 DataBar Expanded Stacked и GS1-128 позволяют кодировать глобальные номера товаров (GTIN), серийные номера, сроки годности, даты производства и партии с помощью стандартизированных идентификаторов применения (Application Identifiers, AI). Разберем по шагам, как настроить печать таких кодов в системе 1С и корректно организовать их считывание терминалами сбора данных (ТСД) и сканерами.
Штрихкод формата GS1 DataBar Expanded Stacked представляет собой многострочный (многоуровневый) составной код. Рассмотрим основные способы его вывода на печать:
GS1 DataBar Expanded Stacked. Это позволяет формировать изображение непосредственно на стороне сервера без сторонних ActiveX-объектов.Zint поддерживает практически все существующие форматы, включая семейство GS1 DataBar. Ее можно подключить через внешнюю компоненту или вызывать из командной строки для генерации файлов изображений штрихкодов с последующей загрузкой в табличный документ 1С.Штрихкоды стандарта GS1-128 (ранее EAN-128) и логистические коды SSCC формируются на базе символики Code 128, но имеют обязательный стартовый функциональный символ FNC1. При использовании компоненты 1С для разделения идентификаторов применения (AI) в строке штрихкода указываются круглые скобки. Посмотрим на пример программного заполнения объекта штрихкода в макете печати:
// Задаем тип кода EAN-128 / GS1-128 (ТипКода = 2 для типовой компоненты)
ОбластьМакета.Рисунки.ШтрихКод.Объект.ТипКода = 2;
// Собираем строку с идентификаторами применения:
// (01) - GTIN товара (14 цифр)
// (11) - Дата производства (ГГММДД)
// (30) - Количество (переменная длина)
// (10) - Номер партии (переменная длина)
ОбластьМакета.Рисунки.ШтрихКод.Объект.Сообщение = "(01)" + "04600822901507" + "(11)" + "161109" + "(30)" + "24" + Символ(29) + "(10)" + "16453I";
Проанализируем ключевые правила составления кодируемой строки:
FNC1: Стартовый признак системы GS1 генератор штрихкода добавляет в начало кодовой последовательности автоматически, вручную передавать его в начале строки не требуется.Group Separator (GS): Если реквизит имеет фиксированную длину (например, (01) — всегда 14 знаков, (11) и (17) — всегда 6 знаков), разделитель после него не нужен. Если же реквизит имеет переменную длину (например, (10) — номер партии или (30) — количество), после него перед следующим идентификатором применения необходимо вставить разделитель Символ(29) (код ASCII 29).Если сгенерированный штрихкод не считывается оборудованием, выясним причину с помощью последовательной проверки:
GS1 DataBar (RSS) выключено для ускорения декодирования стандартных кодов. Необходимо открыть утилиту настройки сканера на устройстве (или отсканировать настроечные штрихкоды из руководства) и активировать поддержку GS1 DataBar Expanded.ASCII 29 (GS) операционной системой часто отбрасывается или обрабатывается как нажатие функциональных клавиш. В результате строка «склеивается», и учетная система не может ее распознать.Когда сканер считывает сложный штрихкод, в событие формы или обработчик внешнего события 1С попадает сплошной поток данных. Разберем, как правильно организовать обработку считанного значения:
GS1 DataBar стандартный префикс равен ]e0, а для кодов GS1-128 — ]C1. Анализируя префикс в процедуре обработки штрихкода, можно сразу направлять строку в нужный алгоритм разбора.ASCII 29 будет передан в 1С без искажений.Символ(29)) или до конца строки.