Как распечатывать штрих коды с использованием шрифта EanGnivc,если количество символов не равно 8 или 13
Добрый день!
В самописной конфигурации, хочу распечатывать макеты со штрих кодом с использованием шрифта EanGnivc.
Понимаю, что перед тем как присвоить параметру значения штрих кода (допустим 2008970010003 ) его нужно закодировать (получиться %!88AA0A-aaeajh!). В этом виде сканер читает первоначальный код.
Для преобразования использую процедуру:
Эту процедуру я скачал на нашем форуме, но не помню кто автор. Спасибо ему большое!!!
Процедура обрабатывает штрих код длиной 13 или 8 символов.
Вопрос как поступить если количество символов меньше требуемой?
Я попробовал дополнять с левой стороной "не хватающие" символы "0". Но сканер не считывает полученный код.
Подскажите, пожалуйста, как распечатывать штрих коды с использованием шрифта EanGnivc,если количество символов не равно 8 или 13.
В самописной конфигурации, хочу распечатывать макеты со штрих кодом с использованием шрифта EanGnivc.
Понимаю, что перед тем как присвоить параметру значения штрих кода (допустим 2008970010003 ) его нужно закодировать (получиться %!88AA0A-aaeajh!). В этом виде сканер читает первоначальный код.
Для преобразования использую процедуру:
Функция СформироватьСтроку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)
+ ЛевыйЗащитныйШаблон
+ ЛеваяЧастьКода
+ СреднийЗащитныйШаблон
+ ПраваяЧастьКода
+ ПравыйЗащитныйШаблон;
Возврат Результат;
КонецФункции
ПоказатьЭту процедуру я скачал на нашем форуме, но не помню кто автор. Спасибо ему большое!!!
Процедура обрабатывает штрих код длиной 13 или 8 символов.
Вопрос как поступить если количество символов меньше требуемой?
Я попробовал дополнять с левой стороной "не хватающие" символы "0". Но сканер не считывает полученный код.
Подскажите, пожалуйста, как распечатывать штрих коды с использованием шрифта EanGnivc,если количество символов не равно 8 или 13.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот