Автор как-то участвовал во внедрении системы приёмки товаров в гипермаркете. Поставщик привозил коробки с разными партиями колбасы — у каждой был свой срок годности. Сети нужно было отслеживать не только что в коробке, но и когда продукт испортится. Обычный EAN-13 такую задачу не решал. Тогда и пригодился GS1-128.
Этот код позволяет наклеить на коробку одну этикетку, а сканер сам определит и товар, и номер партии, и дату производства, и даже вес нетто. Рассказываем, как его генерировать.
Что скрывается за названием GS1-128
GS1-128 (ранее назывался UCC/EAN-128) — это не отдельная символика, а правило использования стандарта Code 128. Ключевая особенность: наличие специального символа FNC1 в первой позиции, который говорит сканеру, что внутри — данные GS1 с идентификаторами применения (Application Identifiers, AI).
Каждый AI — это код из 2–4 цифр, за которым следуют данные. Примеры:
- (01) — GTIN товара (14 цифр).
- (10) — номер партии (до 20 символов).
- (17) — срок годности (дата в формате YYMMDD).
- (3103) — вес нетто в килограммах.
- (21) — серийный номер (уникальный для единицы).
Все AI отделяются друг от друга специальным управляющим символом GS (ASCII 29), который в удобочитаемой записи часто отображают как (GS) или скобках.
Как генерировать GS1-128 правильно
Процесс создания этого кода значительно сложнее, чем у обычного Code 128. Вот алгоритм, которому должен следовать хороший инструмент:
- Шаг 1. Собрать данные в формате AI + значение. Например: (01)04601234567890 (17)251231 (10)партия2025
- Шаг 2. Вставить разделители GS (ASCII 29) между группами (кроме последней).
- Шаг 3. Добавить символ FNC1 в начало (он же автоматически вставляется, если выбран режим GS1-128).
- Шаг 4. Закодировать полученную строку в Code 128 с выбором подходящего типа (A, B или C) для максимальной плотности.
- Шаг 5. Отрисовать штрихкод с обязательным выводом удобочитаемого текста в формате (AI)данные.
Качественный генератор должен также проверять корректность AI (существует ли такой идентификатор) и формат данных (например, дата — только 6 цифр, GTIN — 14 цифр).
Где применяется GS1-128
Список огромен, особенно в логистике и международной торговле:
- Поставки в розничные сети (как требование при приёмке товара).
- Отслеживание медицинских препаратов — обязательное требование в некоторых странах.
- Экспорт и импорт — таможенные декларации могут требовать GS1-128 на паллетах.
- Управление складами и заказами — удобно для WMS-систем.
Ошибки при создании и печати
Опыт показывает, что чаще всего проблемы возникают из-за:
- Отсутствия символа FNC1 — без него сканер не распознаёт формат GS1-128.
- Неправильные разделители — вместо GS (ASCII 29) ставят пробел или запятую. Это нарушает стандарт.
- Неверная длина GTIN — должно быть ровно 14 цифр (добавьте ведущие нули, если нужно).
- Нечитаемая удобочитаемая часть — шрифт должен быть чётким, иначе при ручном вводе возникнут ошибки.
Заключение
Коротко по делу:
- GS1-128 — это расширение Code 128 для кодирования множества атрибутов товара с помощью идентификаторов применения (AI).
- Генератор должен автоматически добавлять FNC1, корректно вставлять разделители GS и проверять форматы данных.
- Применяется повсеместно в логистике и торговле, особенно там, где нужны партия, срок годности или вес.
Вопрос читателям: с какими AI вы работаете чаще всего? Может быть, сталкивались с требованием сети наносить на коробку GS1-128 с (415) — код места назначения? Расскажите, как настраивали генерацию.