Последняя версия DataExpress 3 beta от 9 августа 2020 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Расширения
ИзображениеИзображениеИзображение

Алгоритм штрих-кода EAN-8

Полезное от пользователей DataExpress
masslay
Интересующийся
Сообщения: 94
Зарегистрирован: 01 апр 2017, 09:58
Откуда: Челябинск
Поблагодарили: 1 раз
Контактная информация:

Алгоритм штрих-кода EAN-8

Сообщение masslay » 07 апр 2018, 22:47

Добрый день!
Очень был нужен инструмент генератора штрих-кодов. Лично мне достаточно EAN-8 для внутренней маркировки (первая цифра 2, следующие 6 - это цифровой артикул из числового поля, последняя цифра - проверочная). Именно в проверочной последней цифре кроется вся закавыка. Там сложный расчет. Я его сделал для себя, оставлю тут, может кому-то пригодится.

Код: Выделить всё

CONCAT([_штрихкод],
IIF(
10-
CNUM(
CUT(
CSTR(
(CNUM(CUT([_штрихкод],1,1))+CNUM(CUT([_штрихкод],3,1))+CNUM(CUT([_штрихкод],5,1))+CNUM(CUT([_штрихкод],7,1)))*3+
(CNUM(CUT([_штрихкод],2,1))+CNUM(CUT([_штрихкод],4,1))+CNUM(CUT([_штрихкод],6,1)))),
LENGTH(
CSTR(
(CNUM(CUT([_штрихкод],1,1))+CNUM(CUT([_штрихкод],3,1))+CNUM(CUT([_штрихкод],5,1))+CNUM(CUT([_штрихкод],7,1)))*3+
(CNUM(CUT([_штрихкод],2,1))+CNUM(CUT([_штрихкод],4,1))+CNUM(CUT([_штрихкод],6,1))))),
1))=10,0,
10-
CNUM(
CUT(
CSTR(
(CNUM(CUT([_штрихкод],1,1))+CNUM(CUT([_штрихкод],3,1))+CNUM(CUT([_штрихкод],5,1))+CNUM(CUT([_штрихкод],7,1)))*3+
(CNUM(CUT([_штрихкод],2,1))+CNUM(CUT([_штрихкод],4,1))+CNUM(CUT([_штрихкод],6,1)))),
LENGTH(
CSTR(
(CNUM(CUT([_штрихкод],1,1))+CNUM(CUT([_штрихкод],3,1))+CNUM(CUT([_штрихкод],5,1))+CNUM(CUT([_штрихкод],7,1)))*3+
(CNUM(CUT([_штрихкод],2,1))+CNUM(CUT([_штрихкод],4,1))+CNUM(CUT([_штрихкод],6,1))))),
1))))


[_штрихкод] - это первые 7 цифр кода, которые формируются в отдельном поле.