Имя: Пароль:
1C
1C 7.7
v7: Динозаврам 21 века - EAN13 5digit supplement - генерация печатного представления
0 r72cccp
 
27.02.14
17:06
Может кому пригодится.
Краткое описание: у газет и журналов, а так же прочей периодики может существовать так называемый дополнительный штрих код из 5 цифр. Если вы сумеете настроить свой сканер то он будет при чтении такого кода выдавать строки длиной 18 цифр. Обычный штрихкод EAN13 - это первые 13 цифр слева. Остальное - дополнительный код, печатное представление которого далее. Шрифт - eangnivc.
<script src="https://gist.github.com/r72cccp/9248696.js"></script>;

//******************************************************************************
Функция ЭтоЦифра(стр, позиция=1)
Возврат ?(Найти("0123456789", Сред(стр, позиция, 1))>0, 1, 0);
КонецФункции

//******************************************************************************
Функция EAN13A5CodeGenerate(ШК1) Экспорт
ШК=СокрЛП(Прав(ШК1, 5));
Если СтрДлина(Шк)<>5 Тогда
  Возврат "";
КонецЕсли;
Для н=1 По СтрДлина(ШК) Цикл
  Если ЭтоЦифра(Шк, н)=0 Тогда
   Возврат "";
  КонецЕсли;
КонецЦикла;
НаборПечать="klmnopqrstKLMNOPQRST";
V = 0;
Для н=1 По СтрДлина(Шк) Цикл
  V = V + (9 - 6 * (н % 2)) * Число(Сред(Шк, н, 1));
КонецЦикла;
шматрица = "BBAAA"+
            "BABAA"+
            "BAABA"+
            "BAAAB"+
            "ABBAA"+
            "AABBA"+
            "AAABB"+
            "ABABA"+
            "ABAAB"+
            "AABAB";              
Набор = Сред(шматрица, (V%10)*5+1, 5);
кодстр=":";
Для н=1 По стрДлина(ШК) Цикл
  С = Сред(НаборПечать, ((КодСимв(Сред(Набор, н, 1))-65)*10)+Число(Сред(ШК, н, 1))+1,1)+?(н=СтрДлина(ШК), "", ";");
  кодстр=кодстр + С;
КонецЦикла;
    Возврат кодстр;
КонецФункции


//******************************************************************************
Функция глШКДоп5(Штрихкод) Экспорт
Если СтрДлина(Штрихкод) > 13 Тогда
  Возврат EAN13A5CodeGenerate(прав(СокрЛП(Штрихкод),5));
Иначе                                              
  Возврат "";
КонецЕсли;
КонецФункции
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн