Это конечно элементарно и во многих местах есть, но может кому копать лень..
//Начало
ВвестиСтроку(
ШК_Товара,"Введите штрих-код товара:",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(
Штрихкод,
ТипКода)
;КонецФункции // глСформироватьШтрихкод()
Собственно всё...