Печать штрихкода EAN8

1. an2007 26.10.22 11:47 Сейчас в теме
Добрый день всем. Интересует метода генерации и печати штрихкода EAN8 без внешних компонент, по типу печати EAN13, используя шрифт EanBwrP36Tt.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. CheBurator 3122 26.10.22 22:33 Сейчас в теме
шрифт по идее должен подойти тот же самый.
сгенери еан8 тем же шрифтом и потом визуально сравни с любым онлан-генератором ШК
3. an2007 27.10.22 22:07 Сейчас в теме
(2) Для печати EAN13 используется процедура формирования штрихкода;
//----------------------------------------------------------------
// Процедуры формирования штрих-кодов (фирма 1С)
// Для печати штрих-кодов используются шрифты
// производства фирмы Bear Rock Technologies Corp.http://www.bearrock.com/brhome.htm
// EanBwrP36Tt	- EAN13 
// C39HrP36DlTt	- CODE93
//----------------------------------------------------------------
// Вспомогательные функции
Функция ДобавитьСлева(Стр1, Длн, Стр2)
	Стр0=Стр1;
	Пока СтрДлина(Стр0) <= Длн Цикл
		Стр0=Стр2+Стр0;
	КонецЦикла;
	Стр0=Прав(Стр0, Длн);
	Возврат Стр0;
КонецФункции
//----------------------------------------------------------------
Функция ToUpper(Num)
	UpperCharSet="ABCDEFGHIJ"; Num=Число(Прав(Num,1)); Стр=Сред(UpperCharSet, Num+1, 1);
	Возврат Стр;
КонецФункции
//----------------------------------------------------------------
Функция NumberToLowerChar(Num)
	LowerCharSet="abcdefghij"; Num=Число(Прав(Num,1)); Стр=Сред(LowerCharSet, Num+1, 1);
	Возврат Стр;
КонецФункции
//----------------------------------------------------------------
Функция ParityCheck(Код) // Вычисление кода четности
	четн=0; неч=0;
	// Для строки с нечетной длинной верхняя граница округлается в большую сторону
	Для Поз=1 По Окр(СтрДлина(Код) / 2+0.1, 0) Цикл
		неч=неч+Сред(Код, Поз * 2 - 1, 1);
		Если Поз * 2 <= СтрДлина(Код) Тогда
			четн=четн+Сред(Код, Поз * 2, 1);
		КонецЕсли;
	КонецЦикла;
	КодЧетности=Число(Прав(Строка(1000 - четн - неч * 3), 1));
	Возврат КодЧетности;
КонецФункции
//----------------------------------------------------------------
// Генерация строки, печатаемой как код EAN13
Функция ЕАН13(код) Экспорт
	код=ДобавитьСлева(Строка(код),12,"0");
	код=код+Строка(ParityCheck("0"+Код));
	ПервыйФлаг=Число(Сред(код,1,1));
	левстр=Сред(код,2,6);
	правстр=Сред(код,8,6);
	правкод="";
	Для Поз=1 По 6 Цикл правкод=правкод+NumberToLowerChar(Сред(правстр,Поз,1)); КонецЦикла;
	Если ПервыйФлаг=0 Тогда
// 0 A A A A A
левкод="#!"+Лев(левстр,1)+Сред(левстр,2,1)+Сред(левстр,3,1)+Сред(левстр,4,1)+Сред(левстр,5,1)+Сред(левстр,6,1);
	ИначеЕсли ПервыйФлаг=1 Тогда
// 1 A A B A B B
левкод="$!"+Лев(левстр,1)+Сред(левстр,2,1)+ToUpper(Сред(левстр,3,1))+Сред(левстр,4,1)+ToUpper(Сред(левстр,5,1))+ToUpper(Сред(левстр,6,1));
	ИначеЕсли ПервыйФлаг=2 Тогда
// 2 A A B B A B
левкод="%!"+Лев(левстр,1)+Сред(левстр,2,1)+ToUpper(Сред(левстр,3,1))+ToUpper(Сред(левстр,4,1))+Сред(левстр,5,1)+ToUpper(Сред(левстр,6,1));
	ИначеЕсли ПервыйФлаг=3 Тогда
// 3 A A B B B A
левкод="&!"+Лев(левстр,1)+Сред(левстр,2,1)+ToUpper(Сред(левстр,3,1))+ToUpper(Сред(левстр,4,1))+ToUpper(Сред(левстр,5,1))+Сред(левстр,6,1);
	ИначеЕсли ПервыйФлаг=4 Тогда
// 4 A B A A B B
левкод="'!"+Лев(левстр,1)+ToUpper(Сред(левстр,2,1))+Сред(левстр,3,1)+Сред(левстр,4,1)+ToUpper(Сред(левстр,5,1))+ToUpper(Сред(левстр,6,1));
	ИначеЕсли ПервыйФлаг=5 Тогда
// 5 A B B A A B
левкод="(!"+Лев(левстр,1)+ToUpper(Сред(левстр,2,1))+ToUpper(Сред(левстр,3,1))+Сред(левстр,4,1)+Сред(левстр,5,1)+ToUpper(Сред(левстр,6,1));
	ИначеЕсли ПервыйФлаг=6 Тогда
// 6 A B B B A A
левкод=")!"+Лев(левстр,1)+ToUpper(Сред(левстр,2,1))+ToUpper(Сред(левстр,3,1))+ToUpper(Сред(левстр,4,1))+Сред(левстр,5,1)+Сред(левстр,6,1);
	ИначеЕсли ПервыйФлаг=7 Тогда
// 7 A B A B A B
левкод="*!"+Лев(левстр,1)+ToUpper(Сред(левстр,2,1))+Сред(левстр,3,1)+ToUpper(Сред(левстр,4,1))+Сред(левстр,5,1)+ToUpper(Сред(левстр,6,1));
	ИначеЕсли ПервыйФлаг=8 Тогда
// 8 A B A B B A
левкод="+!"+Лев(левстр,1)+ToUpper(Сред(левстр,2,1))+Сред(левстр,3,1)+ToUpper(Сред(левстр,4,1))+ToUpper(Сред(левстр,5,1))+Сред(левстр,6,1);
	ИначеЕсли ПервыйФлаг=9 Тогда
// 9 A B B A B A
левкод=",!"+Лев(левстр,1)+ToUpper(Сред(левстр,2,1))+ToUpper(Сред(левстр,3,1))+Сред(левстр,4,1)+ToUpper(Сред(левстр,5,1))+Сред(левстр,6,1);
	КонецЕсли;
	кодстр=левкод+"-"+правкод+"!";
	Возврат кодстр;
КонецФункции
Показать


Полученная строка печатается как текст шрифтом EanBwrP36Tt.
Как по аналогии сформировать строку EAN8?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот