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

1. an2007 26.10.22 11:47 Сейчас в теме
Добрый день всем. Интересует метода генерации и печати штрихкода EAN8 без внешних компонент, по типу печати EAN13, используя шрифт EanBwrP36Tt.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. CheBurator 2725 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?
Оставьте свое сообщение

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