Идентификатор применения GS1 (AI)
Идентификатор применения GS1 (AI) — числовой префикс из 2–4 цифр в GS1-коде: он сообщает сканеру, какие данные идут следом и в каком формате — GTIN, партия, срок годности, серийный номер.
Идентификатор применения (Application Identifier, AI) — это числовой префикс из двух-четырёх цифр, с которого начинается каждое поле данных в системе GS1. AI работает как метка формата: он говорит декодеру, что за значение идёт следом, какой у него смысл и сколько символов занимает. Благодаря этому в один код — GS1-128, GS1 DataMatrix или GS1 QR — упаковывается сразу несколько атрибутов товара, а не один номер.
Как устроен идентификатор применения
Строка данных GS1 — это цепочка блоков вида «AI + значение». Сначала идёт префикс, дальше — данные ровно того типа, который он задаёт. Часть идентификаторов имеют поле фиксированной длины: (01) всегда несёт 14 цифр, (17) — 6 цифр даты. Другие — переменной длины: например, (10) для партии допускает до 20 символов, и где именно поле заканчивается, заранее неизвестно. Скобки вокруг цифр печатают только для человека под кодом; в самих данных их нет — там идёт сплошная строка.
Частые AI и что они кодируют
Полный справочник GS1 насчитывает сотни идентификаторов, но в рознице и логистике встречается небольшой рабочий набор.
| AI | Что кодирует | Длина |
|---|---|---|
| (00) | SSCC — код логистической единицы | 18 |
| (01) | GTIN товара | 14 |
| (10) | Номер партии | перем., до 20 |
| (17) | Срок годности, ГГММДД | 6 |
| (21) | Серийный номер | перем., до 20 |
Пример строки: (01)04600000000015(10)A1B2(17)271231. В ней декодер читает GTIN, номер партии A1B2 и срок годности 31 декабря 2027 года.
Связь с FNC1
Поля переменной длины создают проблему: сканеру надо понять, где значение заканчивается. Её решает служебный символ FNC1. Первый FNC1 в начале кода помечает всю строку как GS1. Дальше FNC1 ставится разделителем после каждого поля переменной длины и означает «значение кончилось, дальше новый AI». После полей фиксированной длины разделитель не нужен — декодер и так знает, сколько знаков отсчитать. Поэтому идентификаторы в коде обычно располагают так, чтобы фиксированные поля шли первыми, а переменные — в конце, экономя символы-разделители.