Что делает последняя цифра
Во многих цифровых идентификационных ключах GS1 последняя цифра вычисляется по остальным. Она позволяет проверить согласованность последовательности и обнаружить некоторые ошибки ввода. Но корректная контрольная цифра не сообщает, кому принадлежит номер, существует ли товар и допустимо ли использовать этот идентификатор в конкретной системе. Это арифметическая проверка, которую полезно выполнять до генерации штрихкода, сохраняя отдельно организационную проверку исходных данных.
Вход нужно воспринимать как текст из цифр. Начальные нули значимы для длины ключа и не должны исчезать при переносе между таблицами и формами. Разделители пробелами можно обрабатывать только по понятному правилу интерфейса, а посторонние символы нельзя молча отбрасывать. Если пользователь вставил два номера подряд или букву вместо цифры, автоматическое «очищение» способно превратить ошибку в другую правдоподобную последовательность.
Алгоритм справа налево
Возьмите тело ключа без контрольной цифры. Начиная с крайней правой цифры, умножайте значения попеременно на 3 и на 1. Сложите результаты. Контрольная цифра равна дополнению этой суммы до ближайшего не меньшего числа, кратного десяти. В программной записи удобно использовать (10 − сумма mod 10) mod 10. Второй остаток нужен, чтобы при уже кратной десяти сумме получить ноль, а не десять.
Для собственного учебного тела 123456789012 взвешенная сумма равна 92, поэтому контрольная цифра — 8. Получается последовательность 1234567890128. Этот пример предназначен только для понимания алгоритма и не обозначает зарегистрированный товар. При проверке полного номера сначала отделяют последнюю цифру, вычисляют ожидаемую по телу и сравнивают. Если значения различаются, правильное сообщение — «контрольная цифра не совпадает», а не «товар не существует».
Длина и назначение
GTIN может иметь разные установленные длины. Алгоритм удобно реализовывать через отсчёт справа, чтобы не ошибаться с чередованием весов для разных вариантов. При этом интерфейс должен знать, что именно проверяет: тело для добавления цифры или полный ключ для валидации. Одна форма без выбора режима часто вызывает путаницу, когда человек вставляет 13 цифр, а программа трактует их как тело будущего 14-значного ключа.
Не путайте эту процедуру с контрольным символом самого Code 128 и с алгоритмом Luhn. Они решают сходную общую задачу контроля, но используют разные правила. Совпадение слов «mod 10» не делает алгоритмы одинаковыми. Если калькулятор используется в производственном портале, рядом полезно показать пример вычисления и название поддерживаемой системы. Это облегчает проверку реализации и снижает риск применения инструмента к неподходящим данным.
Рабочий процесс с макетом
Получите утверждённый номер, проверьте длину и контрольную цифру, затем сгенерируйте символ. После экспорта считайте данные из полученного изображения и сравните с исходной строкой. Для серии товаров сохраняйте соответствие номера, артикула и файла. Такой маршрут ловит разные классы ошибок: неверный ввод, некорректную генерацию и случайную подмену картинки при вёрстке. Одна арифметическая проверка в начале не заменяет остальных этапов.
- Разделяйте расчёт новой цифры и проверку полного ключа.
- Сохраняйте нули в начале строки.
- Не исправляйте ошибочную последнюю цифру без явного действия пользователя.
- Подписывайте поддерживаемые длины и типы идентификаторов.
- Не выдавайте математическую корректность за регистрацию или право использования номера.
Источники и проверка
Учебные примеры объясняют принцип. Материал, технологические значения и критерии приёмки согласуйте с исполнителем для своего заказа.

