Каталог решений - Штрихкодирование автозапчастей. Альфа-авто.

Штрихкодирование автозапчастей. Альфа-авто.

Штрихкодирование автозапчастей. Альфа-авто.

В наличии

При запуске штрихкодирования в автозапчастях основной сложностью является заполнение самих штрихкодов. Так же т.к. различной номенклатуры очень много и постоянно могут появляться новые товарные позиции, то оклейка склада наклейками со своими штрихкодами становится проблематичной. Но..

Категория:

Описание

Но на упаковках в большинстве случаях есть штрихкоды производителей. И можно попробовать использовать их.

Большинство штрихкодов производителей по оригинальным и приличным не оригинальным брендам — это каталожный номер детали. Но с небольшими дополнениями/изменениями. Есть, конечно, еще китай, но там своя песня.  🙂

Обычно не хватает каких-то символов или штрихкод содержит дополнительные «лишние» символы. Повлиять на считывание штрихкода сканером мы не можем, но можем изменить его обработку.

В статье сделана попытка систематизировать отличия штрихкода от каталожного номера, информация получена опытным путем, и буду благодарен за комментарии и дополнения. Плюс приведены фрагменты кода для автоматизации этих проверок на базе Альфа-авто, ред.5. (Для ред.4 потребует некоторых корректировок).

Первое, сделаем автоматическое формирование штрихкода, равному артикулу при записи номенклатуры:

// Если нет ещё штрих кода, то заполним его по Артикулу.
Если НЕ ЭтоГруппа Тогда
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ШтрихКоды.ШтрихКод
	|ИЗ
	|	РегистрСведений.ШтрихКоды КАК ШтрихКоды
	|ГДЕ
	|	ШтрихКоды.Объект = &Объект
	|	И ШтрихКоды.ШтрихКод = ПОДСТРОКА(&ШтрихКод, 1, 22)";
	Запрос.УстановитьПараметр("Объект",   Ссылка);
	Запрос.УстановитьПараметр("ШтрихКод", Артикул);
	Выборка = Запрос.Выполнить().Выбрать();
	Если Не Выборка.Следующий() ТОгда
		// Ещё не записи, сделаем новую запись
		Набор = РегистрыСведений.ШтрихКоды.СоздатьНаборЗаписей();	
		Набор.Отбор.Объект.Значение      = Ссылка;
		Набор.Отбор.Объект.Использование = Истина;
		Набор.Прочитать();
		
		НоваяСтрока = Набор.Добавить();
		НоваяСтрока.Запрет 			 = Ложь;
		НоваяСтрока.Объект           = Ссылка;
		НоваяСтрока.ЕдиницаИзмерения = ОсновнаяЕдиницаИзмерения;
		НоваяСтрока.ШтрихКод         = Артикул;
		
		Набор.Записать();
	КонецЕсли;
КонецЕсли;

Дальше, если штрих код, равный артикулу, не найден, то пробуем модифицировать его по различным вариантам и найти в нем каталожный номер детали. В Альфа-авто для этого в обработке ШтрихКоды необходимо модифицировать процедуру НайтиСтруктуруПоШтрихКоду().

Для запчастей Toyota, Suzuki и некоторых других в конце штрих кода обычно встречается дополнительный символ через два пробела: <8871006420  Q>, <531112B060  K> и др.

// Если в штрих коде есть два пробела и буква в конце, то убираем их. . 
ЕстьПробелы = Найти(ШК," ");
Если ЕстьПробелы > 0 И ЕстьПробелы + 2 = СтрДлина(ШК) Тогда
 СтуктураОбъект = НайтиСтруктуруПоШтрихКоду(Формат(Лев(ШК,СтрДлина(ШК)-3),"ЧГ=0"), флРугатьсяНаЗапрещенныйШтрихКод);

Тут же можно добавить добавление нового реально прочитанного штрихкода в базу: 

СтуктураОбъект =  НайтиСтруктуруПоШтрихКоду(Формат(Лев(ШК,Найти(ШК,"  T")),"ЧГ=0"), флРугатьсяНаЗапрещенныйШтрихКод);	
							
				Если ТипЗнч(СтуктураОбъект) = Тип("Структура") Тогда
					// Нашли, изменим штирих код и вернём эту структуру.
					Набор = РегистрыСведений.ШтрихКоды.СоздатьНаборЗаписей();
					Набор.Отбор.Объект.Значение = СтуктураОбъект.Объект;
					Набор.Отбор.Объект.Использование = Истина;
					Набор.Прочитать();  
					
					НовыйШтрихКод = Набор.Добавить();
					НовыйШтрихКод.Объект           = СтуктураОбъект.Объект; 
					Если ТипЗнч(СтуктураОбъект.Объект)=Тип("СправочникСсылка.Номенклатура") Тогда 
						НовыйШтрихКод.ЕдиницаИзмерения           = СтуктураОбъект.Объект.ОсновнаяЕдиницаИзмерения;
					КонецЕсли;
					НовыйШтрихКод.ШтрихКод               = ШК;
					НовыйШтрихКод.Запрет= Ложь;
					Набор.Записать();
				
					Сообщить("Для номенклатуры '"+СтуктураОбъект.Объект.Артикул+"', "+СтуктураОбъект.Объект+
							" добавлен новый штрих код '"+ШК+"'."); 
										
					Возврат СтуктураОбъект; 
				КонецЕсли;

Для Honda штрихкод полностью соответствует каталожному номеру с «-» и разделителями, но для удобства ввода и поиска«-» обычно убирают при заполнении номенклатуры. Плюс у некоторых производителей могут быть лишние дефисы в штрихкодах, поэтому проверим штрих код без дефисов:

// Если в штрих коде есть "-", то убираем их. . 
Если Найти(ШК, "-") > 0 Тогда
СтуктураОбъект = НайтиСтруктуруПоШтрихКоду(Формат(СтрЗаменить(ШК,"-",""),"ЧГ=0"), флРугатьсяНаЗапрещенныйШтрихКод);

Встречаются штрихкоды с одним или двумя лишними нулями на конце. Также можно проверить без них:

// Если в конце один ноль, проверим без них:
Если Сред(ШК,СтрДлина(Шк),СтрДлина(Шк)) = "0" Тогда
СтуктураОбъект = НайтиСтруктуруПоШтрихКоду(Формат(Лев(ШК,СтрДлина(ШК)-1),"ЧГ=0"), флРугатьсяНаЗапрещенныйШтрихКод);

Для Cirtoen и, возможно, для всех PSA в штрихкоде на конце встречается -000, когда в каталожном номере -0000, встречаются лишние -С148 в конце номера:

Если Прав(ШК,4) = "-000" Тогда
СтуктураОбъект = НайтиСтруктуруПоШтрихКоду(ШК+"0", флРугатьсяНаЗапрещенныйШтрихКод);

Для Mitsubishi в конце бывает лишние »  T» и через пробел число с двумя или треми лидирующими нулями <MF453033V T   001>,  <MD339754  T  0001>, <MD050316  T  0005>. Так же «T» и количество может быть без пробелов или с одним пробелом.  <MD339754T  0001>,  <MD339754 T  0001>. Бывает в переди символ «P».

// Если в конце " T" и количество, то отрезаем его:
Если Найти(ШК,"  T") > 0 Тогда
СтуктураОбъект = НайтиСтруктуруПоШтрихКоду(Формат(Лев(ШК,Найти(ШК,"  T")),"ЧГ=0"), флРугатьсяНаЗапрещенныйШтрихКод);

Для Mitsubishi, Hyundai, Kia и некоторых других брендов число через различное количество пробелов (обычно это количество штук в упаковке): <MN195668      001>, <MF453019  0002> и т.д. Пробелов обычно больше двух, поэтому для отсечения таких символов можно ориентироваться на два пробела и выполнять эту проверку после остальных, чтобы не отсечь нужные символы.

Если Найти(ШК,"  ") > 0 Тогда
СтуктураОбъект = НайтиСтруктуруПоШтрихКоду(Формат(Лев(ШК,Найти(ШК,"  ")),"ЧГ=0"), флРугатьсяНаЗапрещенныйШтрихКод);

Ну и вариант, когда каталожный номер числовой и зашифрован обычным EAN13. В таком случае к штрихкоду добавляется 13-й контрольный символ, и надо проверить штрихкод без него:

// Если 13 символов, попробуем обрезать последний
Если СтрДлина(ШК) = 13 Тогда
СтуктураОбъект = НайтиСтруктуруПоШтрихКоду(Формат(Лев(ШК,12),"ЧГ=0"), флРугатьсяНаЗапрещенныйШтрихКод);

Так как штрихкод, равный каталожному номеру, может содержать любое количество символов, буквы и цифры, то для его печати (к примеру, для восстановления поврежденного ШК на упаковке или при разделении одной упаковки на несколько) использовать коды EAN13 не получится, и надо будет использовать Code128 или другие форматы, способные кодировать строки различной длины с буквами и цифрами.

К минусам данного метода можно отнести:

  • При работе с различными брендами каталожные номера у разных производителей все-таки иногда пересекаются, что может привести к ошибкам. Тут можно добавить дополнительную проверку по бренду в случае нахождения нескольких одинаковых артикулов.
  • В базе уже должны быть заполнены сканируемые номенклатурные позиции с каталожными номерами.
  • На разных коробках у разных производителей штрихкоды находятся в разных местах, могут присутствовать другие штрихкоды, не содержащие в себе каталожного номера, что приводит к неудобству считывания штрихкодов.
  • Мелкие детали (болты, гайки, шайбы, клипсы и т.д.) не имеют оригинальных коробок.
  • Некоторые детали приходят по несколько штук в одной коробке, и их надо разделять.

К плюсам то, что нет необходимости оклеивать все детали, формировать и заносить штрихкоды в базу.

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