Каталог решений - Генерация штрихкодов для весового (дробного) товара. Далион УНО

Генерация штрихкодов для весового (дробного) товара. Далион УНО

Генерация штрихкодов для весового (дробного) товара. Далион УНО

В наличии

Для пользователей Софтбаланс Далион УНО.
Обработка генерирует весовой штрихкод для выбранного товара, по введенному количеству. Есть возможность добавить сгенерированный штрихкод к выбранной номенклатуре, с базовой единицей измерения.

Категория:

Описание

При автоматизации пивного магазина возникла необходимость печати этикеток с определенным заказчиком объемом пива, например 1,5 л, 2 литра и т.д.. Этикетка должна быть со штрихкодом, чтобы кассир мог быстро внести товар в чек сканером штрихкода.

Оказалось, что такого функционала в Далионе нет. Есть возможность набрать штрихкод вручную, но контрольный символ нужно генерировать на сторонних сайтах, что не вполне удобно, пользователи путаются. Решил проблему написанием обработки. Для тех кто в теме прилагаю текст модулей. Спасибо разработчикам Далиона, за алгоритм расчета контрольного символа. Все остальные могут скачать готовый вариант для EAN 13.

Процедура ГенерироватьШКНажатие(Элемент)
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Номенклатура.Код КАК Артикул
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.Ссылка = &Номенклатура";
	
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	
	ТЗ = Запрос.Выполнить().Выгрузить();
	
	Артикул = ТЗ[0].Артикул;
	
	
	
	Артикул = ДобитьСтрокуНулями(Артикул,5); 
	
	
	Количество = ВесОбъемИзЧисла(ОбъемВес);
	Количество = ДобитьСтрокуНулями(Количество,5);
	
	Префикс = Справочники.ФорматыШтрихКодов.ВключаетКоличество.ПрефиксШК;
	
	ШК = Префикс+Артикул+Количество;
	
	ШК = Префикс+Артикул+Количество+КонтрольныйСимволEAN1(ШК,13); 
	
	
КонецПроцедуры

Процедура ДобавитьШККНоменклатуреНажатие(Элемент)
	ТекЗапись = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
	ЕдиницаИзмеренияДляШтрихКода = Номенклатура.БазоваяЕдиницаИзмерения; 
	
	ТекЗапись.Номенклатура     = Номенклатура;
	ТекЗапись.НеИспользуется   = Ложь;
	ТекЗапись.ТипШтрихКода     = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
	ТекЗапись.ЕдиницаИзмерения = ЕдиницаИзмеренияДляШтрихКода;
	
	ТекЗапись.ШтрихКод = ШК;
	ТекЗапись.Записать(Истина);
КонецПроцедуры


// Добить строку до нужной длины нулями

Функция ДобитьСтрокуНулями(Строка,ДлинаСтр)
	Инд = ДлинаСтр - СтрДлина(Строка);
	
	Пока Инд <> 0  Цикл
		
		Строка = "0"+Строка;
		Инд = Инд - 1;
		
	КонецЦикла;
	Возврат Строка
КонецФункции

// Функция вычисляет контрольный символ кода EAN
//
// Параметры:
//  ШтрихКод     - штрих-код (без контрольной цифры)
//  Тип          - тип штрих-кода: 13 - EAN13, 8 - EAN8
//
// Возвращаемое значение:
//  Контрольный символ штрих-кода
//
Функция КонтрольныйСимволEAN1(ШтрихКод, Тип) 
	
	Четн   = 0;
	Нечетн = 0;
	
	КоличествоИтераций = ?(Тип = 13, 6, 4);
	
	Для Индекс = 1 По КоличествоИтераций Цикл
		Если (Тип = 8) и (Индекс = КоличествоИтераций) Тогда
		Иначе
			Четн   = Четн   + Сред(ШтрихКод, 2 * Индекс, 1);
		КонецЕсли;
		Нечетн = Нечетн + Сред(ШтрихКод, 2 * Индекс - 1, 1);
	КонецЦикла;
	
	Если Тип = 13 Тогда
		Четн = Четн * 3;
	Иначе
		Нечетн = Нечетн * 3;
	КонецЕсли;
	
	КонтЦифра = 10 - (Четн + Нечетн) % 10;
	
	Возврат ?(КонтЦифра = 10, "0", Строка(КонтЦифра));
	
КонецФункции // КонтрольныйСимволEAN()

Функция ВесОбъемИзЧисла(Число)
	
	Инд = СтрНайти(Число,",");
	Если Инд > 0 Тогда
		Стр = Сред(Число,Инд+1);
		Если СтрДлина(Стр) = 2 Тогда  //0,53
			Стр = СтрЗаменить(Число,",","");
			Стр = Стр + "0";
		ИначеЕсли СтрДлина(Стр) = 1 Тогда   //0,5
			Стр = СтрЗаменить(Число,",","");
			Стр = Стр + "00";
		ИначеЕсли СтрДлина(Стр) = 3 Тогда   //0,555
			Стр = СтрЗаменить(Число,",","");
		КонецЕсли;
	Иначе // запятая не найдено, значит у нас целое число  1,000
		СтрЧисло = Строка(Число); 
		Стр = СтрЧисло + "000";	
	КонецЕсли;
	
	Возврат Стр
	
КонецФункции // ВесОбъемИзЧисла()

Проверялось на ДАЛИОН: Управление магазином. ПРО, ред. 2.0 (2.0.37.02).

Обработка на обычных формах.

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