EAN 13, EAN 8 — контроль и формирование 1С 7.7
Несколько функций, служащих для проверки корректности введенного штрих-кода на соответствие EAN 13, EAN 8.
Генерация ШК в формате EAN 13, EAN 8.
- Описание
- Подробнее
Описание
Это конечно элементарно и во многих местах есть, но может кому копать лень..
//Начало
ВвестиСтроку
(
ШК_Товара
,«Введите штрих-код товара:»,13,0,)
;
Если
гтТестШтрихКода
(
ШК_Товара
)=0 Тогда
Предупреждение
(«Внимание! Штрих-код не соответствует EAN-13»)
;
КонецЕсли
;
//это используется для контроля
гтТестШтрихКода , глКонтрольныйСимволEAN
//а вот для генерации, например для весового товара или собственных наклеек
//диапазон для префикса, если не ошибаюсь 20-29, он никогда не используется производителями
//дальше 10 символов — чего хотите (код товара в учетной программе, цена, вес, скидка и т.д., можно в комбинации),
//ну и контрольный символ 😉
Процедура
ПоКнопкеГенерацияШтрихКода
()
КодТовара
=
глДополнитьСтрокуЛ
(
СокрЛП
(
Код
), «0», 10)
; ШтрихКод
=
глСформироватьШтрихкод
(
глПрефиксШтучногоШК
,
КодТовара
)
;
// и т.д. ... КонецПроцедуры
глСформироватьШтрихкод , СимволыВЦифры , глДополнитьСтрокуЛ , глКонтрольныйСимволEAN
использование СимволыВЦифры и глДополнитьСтрокуЛ в глСформироватьШтрихкод — мне кажется избыточным,
но возможно это для чего-нибудь нужно… 🙂
//А это в глобальнике:
//******************************************************************************
// глДополнитьСтрокуЛ(Стр,Чем,Длина)
//
// Параметры:
// Стр — исходная строка
// Чем — символ, которым дополняем строку
// Длина — длина, до которой заполняем строку
//
// Возвращаемое значение:
// Результирующая строка
//
// Описание:
// Дополняет передаваемую строку Стр символами Чем до строки длиной Длина
// слева
//
Функция
глДополнитьСтрокуЛ
(
Стр
,
Чем
,
Длина
) Экспорт
Добавить
=
Длина
—
СтрДлина
(
Стр
)
; Добавок
=«»
;
Для
Сч
= 1 По
Добавить
Цикл
Добавок
=
Добавок
+
Чем;
КонецЦикла
;
Возврат
Добавок
+
Стр;
КонецФункции //глДополнитьСтрокуЛ()
//******************************************************************************
// глКонтрольныйСимволEAN(ШтрКод, Тип)
//
// Параметры:
// ШтрКод — 12-символьный штрих-код (без контрольной цифры)
// Тип — тип штрихкода: 13 — EAN13, 8 — EAN8
//
// Возвращаемое значение:
// Контрольный символ
//
// Описание:
// Функция вычисляет контрольный символ кода EAN
//
Функция
глКонтрольныйСимволEAN
(
ШтрКод
,
Тип
) Экспорт
Четн
= 0
; Нечетн
= 0
;
Если
Тип
= 13 Тогда
КолвоИтераций
= 6
;
Иначе
КолвоИтераций
= 4
;
КонецЕсли
;
Для
Индекс
= 1 По
КолвоИтераций
Цикл
Четн
=
Четн
+
Сред
(
ШтрКод
, 2 *
Индекс
, 1)
; Нечетн
=
Нечетн
+
Сред
(
ШтрКод
, 2 *
Индекс
— 1, 1)
;
КонецЦикла
;
Если
Тип
= 13 Тогда
Четн
=
Четн
* 3
;
Иначе
Нечетн
=
Нечетн
* 3
;
КонецЕсли
;
КонтЦифра = 10 — (
Четн
+
Нечетн
)
%
10
;
Возврат
?
(
КонтЦифра
= 10, «0»,
Строка
(
КонтЦифра
))
;
КонецФункции // глКонтрольныйСимволEAN()
//************
Функция
гтТестШтрихКода
(
ШК
) Экспорт
Рез
=1
; ДлинаШК
=
СтрДлина
(
ШК
)
;
Если
ДлинаШК
<> 13 Тогда
сообщить
(«Длина штрих-кода не равна 13 символам! Проверьте его правильность! «)
; Рез
=0
;
КонецЕсли
; Тест
=
глКонтрольныйСимволEAN
(
ШК
, 13)
;
Если
Сред
(
ШК
,13,1) <>
Тест
Тогда
сообщить
(«Неверный штрих-код! Проверьте»)
; Рез
=0
;
КонецЕсли
;
Возврат(
Рез
)
;
КонецФункции
//******************************************************************************
// СтрокаВЦифры(Стр)
//
// Параметры:
// Стр — строка символов
//
// Возвращаемое значение:
// Строку, сосотоящую только из символов цифр
//
// Описание:
// Из исходной строки переносит в результирующую строку символы, при этом,
// если символ не является цифровым, то в результирующую строку переносится
// символ цифры, который является самым правым в коде символа исходной строки
//
Функция
СимволыВЦифры
(
СтрСимв
)
СтрЦифр
= «»
;
Для
Индекс
= 1 По
СтрДлина
(
СтрСимв
) Цикл
ТекСимв
=
Сред
(
СтрСимв
,
Индекс
, 1)
;
Если
Найти
(«1234567890»,
ТекСимв
) = 0 Тогда // преобразуем символ
ТекСимв
=
Строка
(
КодСимв
(
ТекСимв
)
%
10)
;
КонецЕсли
; СтрЦифр
=
СтрЦифр
+
ТекСимв;
КонецЦикла
;
Возврат
СтрЦифр;
КонецФункции // СтрокаВЦифры()
//******************************************************************************
// глСформироватьШтрихкод(Префикс, ПредвКод, ТипКода=13)
//
// Параметры:
// Префикс — префикс штрихкода (строка из 2-х символов)
// ПредвКод — строка, содержащая символы из которых нужно сформировать штрих-код
// ТипКода — тип формируемого штрихкода. Возможные значения:
// 13 — для формирования EAN 13 (по умолчанию)
// 8 — для формирования EAN 8
// Возвращаемое значение:
// Нет
//
// Описание:
// На основании кода Номенклатуры и кода ОКЕИ формирует штрихкод в формате EAN
//
Функция
глСформироватьШтрихкод
(
Префикс
,
ПредвКод
,
ТипКода
=13) Экспорт Если
ТипКода
= 13 Тогда
ИспКолво
= 10
;
Иначе
ИспКолво
= 6
;
КонецЕсли
; Штрихкод
=
СимволыВЦифры
(
Прав
(
СокрЛП
(
ПредвКод
),
ИспКолво
))
; Штрихкод
=
Префикс
+
глДополнитьСтрокуЛ
(
Штрихкод
, «0»,
ИспКолво
)
;
Возврат
Штрихкод
+
глКонтрольныйСимволEAN
(
Штрихкод
,
ТипКода
)
;
КонецФункции // глСформироватьШтрихкод()
Собственно всё…

