Каталог решений - Формирование штрихкода EAN-13 шрифтом EanGnivc

Формирование штрихкода EAN-13 шрифтом EanGnivc

Формирование штрихкода EAN-13 шрифтом EanGnivc

В наличии

Функция преобразования текстового представления ШК к последовательности символов шрифта EanGnivc

Категория:

Описание

Способ кодирования каждого символа штрихкода по алгоритму EAN зависит не только от его значения, но и от положения. Таким образом, для вывода штрихкода шрифтом EanGnivc,  недостаточно указать шрифт — штрихкод должен быть преобразован из текстового представления «2880000004097» в строку вида «%!88AA0A-aaeajh!». Что и делает представленная функция.

upd

Добавил поддержку формирования EAN-8

Функция СформироватьСтрокуEanGnivc(ШтрихкодСтрокойСимволов) Экспорт
    Попытка
       
Тест = Число(ШтрихкодСтрокойСимволов);
    Исключение
        ВызватьИсключение
«Штрихкод может содержать только цифры»;
    КонецПопытки;

    СимволыСпособовКодирования = «#$%&'()*+,»;
   
ЛевыйЗащитныйШаблон = «!»;
   
СреднийЗащитныйШаблон = «-«;
   
ПравыйЗащитныйШаблон = «!»;

    СимволыШрифтаПоТипамКодов = Новый Соответствие;
   
СимволыШрифтаПоТипамКодов.Вставить(«L», «0123456789»);
   
СимволыШрифтаПоТипамКодов.Вставить(«G», «ABCDEFGHIJ»);
   
СимволыШрифтаПоТипамКодов.Вставить(«R», «abcdefghij»);

    СпособыКодированияЛевойЧасти = Новый Массив;
   
СпособыКодированияЛевойЧасти.Добавить(«LLLLLL»);
   
СпособыКодированияЛевойЧасти.Добавить(«LLGLGG»);
   
СпособыКодированияЛевойЧасти.Добавить(«LLGGLG»);
   
СпособыКодированияЛевойЧасти.Добавить(«LLGGGL»);
   
СпособыКодированияЛевойЧасти.Добавить(«LGLLGG»);
   
СпособыКодированияЛевойЧасти.Добавить(«LGGLLG»);
   
СпособыКодированияЛевойЧасти.Добавить(«LGGGLL»);
   
СпособыКодированияЛевойЧасти.Добавить(«LGLGLG»);
   
СпособыКодированияЛевойЧасти.Добавить(«LGLGGL»);
   
СпособыКодированияЛевойЧасти.Добавить(«LGGLGL»);

    СпособКодированияПравойЧасти = «RRRRRR»;

    Если СтрДлина(ШтрихкодСтрокойСимволов) = 13 Тогда
       
КоличествоСимволовВГруппе = 6;
    ИначеЕсли
СтрДлина(ШтрихкодСтрокойСимволов) = 8 Тогда
       
КоличествоСимволовВГруппе = 4;
       
СимволыСпособовКодирования = «»;
       
ШтрихкодСтрокойСимволов = «0»+ШтрихкодСтрокойСимволов;
    Иначе
        ВызватьИсключение
«Поддерживаются только штрихкоды длиной 13 и 8 символов»;
    КонецЕсли;

    ИндексСпособаКодирования = Число(Лев(ШтрихкодСтрокойСимволов,1));

    ЛеваяЧастьКода = «»;
   
ПраваяЧастьКода = «»;

    Для ИндексСимвола = 1 По КоличествоСимволовВГруппе Цикл
       
ЛеваяЧастьКода = ЛеваяЧастьКода
            + Сред(СимволыШрифтаПоТипамКодов[Сред(СпособыКодированияЛевойЧасти[ИндексСпособаКодирования],ИндексСимвола,1)]
                    ,
Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола+1),1))+1
                   
,1);
       
ПраваяЧастьКода = ПраваяЧастьКода
            + Сред(СимволыШрифтаПоТипамКодов[Сред(СпособКодированияПравойЧасти,ИндексСимвола,1)]
                    ,
Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола+КоличествоСимволовВГруппе+1),1))+1
                   
,1);
    КонецЦикла;

    Результат = «»  + Сред(СимволыСпособовКодирования,ИндексСпособаКодирования+1,1)
                    +
ЛевыйЗащитныйШаблон
                    + ЛеваяЧастьКода
                    + СреднийЗащитныйШаблон
                    + ПраваяЧастьКода
                    + ПравыйЗащитныйШаблон;
    Возврат
Результат;
КонецФункции

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