Расчет контрольной цифры для GTIN-8, GTIN-13
Posted On 2020-09-19
Алгоритм расчёта контрольного разряда в кодах GS1-13, GS1-8, ITF-14
Практически во всех системах нумерации системы GS1 (GS1-13, GS1-14 (ITF-14), GS1-8, UPC) используется понятие контрольного числа, а, точнее, контрольной цифры. Роль контрольной цифры огромна — она позволяет безошибочно определять, правильно ли считан штриховой код в супермаркете, банке или в любой другой системе, использующей штриховое кодирование. Алгоритм определения контрольного числа некоторого набора цифр для системы GS1 носит название «Модуло 10».
Он состоит из следующих шагов:
- Цифры набора нумеруются справа налево.
- Подсчитываются суммы цифр, стоящих на четных и нечетных местах.
- Сумма цифр, стоящих на четных местах, суммируется с утроенной суммой цифр, стоящих на нечетных местах.
- Если цифра единиц полученного результата равна нулю, то контрольная цифра — 0. Если последняя цифра результата не нуль, то контрольная цифра равна дополнению этой цифры до 10.
Пример: Пусть имеется набор цифр в системе EAN-13 — 345678905675 C.
- Цифры, стоящие на нечетных местах: 5,6,0,8,6,4. Сумма этих цифр равна 29.
- Цифры, стоящие на четных местах:7,5,9,7,5,3 . Сумма этих цифр равна 36.
- Результат 3-го шага: 29*3+36=123.
- Искомая контрольная цифра C=7, т.к. 7+3 = 10.
// Расчет контрольной цифры для GTIN-8. // // Параметры: // GTIN - Текстовая строка с GTIN-8. Может содержать числа от 0 до 9. // // Возвращаемое значение: // - Контрольный символ (число) рассчитанный по алгоритму для GTIN. // Функция РассчитатьКонтрольныйСимволGTIN8(Знач GTIN) Экспорт Сумма = 0; Коэффициент = 3; Для Сч = 1 По 7 Цикл ВремКодСимвола = КодСимвола(GTIN, Сч); Сумма = Сумма + Коэффициент * (ВремКодСимвола - 48); Коэффициент = 4 - Коэффициент; КонецЦикла; Сумма = (10 - Сумма % 10) % 10; КонтрольныйСимвол = Символ(Сумма + 48); Возврат КонтрольныйСимвол; КонецФункции ////////////////////////////////////// // Расчет контрольной цифры для GTIN-13. // // Параметры: // GTIN - Текстовая строка с GTIN-13. Может содержать числа от 0 до 9. // // Возвращаемое значение: // - Контрольный символ (число) рассчитанный по алгоритму для GTIN. // Функция РассчитатьКонтрольныйСимволGTIN13(Знач GTIN) Экспорт Сумма = 0; Коэффициент = 1; Для Сч = 1 По 12 Цикл ВремКодСимвола = КодСимвола(GTIN, Сч); Сумма = Сумма + Коэффициент * (ВремКодСимвола - 48); Коэффициент = 4 - Коэффициент; КонецЦикла; Сумма = (10 - Сумма % 10) % 10; КонтрольныйСимвол = Символ(Сумма + 48); Возврат КонтрольныйСимвол; КонецФункции