Каталог решений - EAN 13, EAN 8 — контроль и формирование 1С 7.7

EAN 13, EAN 8 — контроль и формирование 1С 7.7

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

(

Штрихкод

,

ТипКода

)

;
					

КонецФункции // глСформироватьШтрихкод()
Собственно всё…

has been added to your cart:
Оформление заказа