USSR
9 - 01.07.2009 - 12:24
|
функция ПолучитьШтрихКод, EAN-13: // ------------------------------- Функция ВычислитьШтрихКод(ШтрихКод) // Вычисляет контрольный разряд и // возвращает правильный штрихкод Четн = 0; Нечетн = 0; КоличествоИтераций = 6; Для Индекс = 1 По КоличествоИтераций Цикл Четн = Четн + Число(Сред(ШтрихКод, 2 * Индекс, 1)); Нечетн = Нечетн + Число(Сред(ШтрихКод, 2 * Индекс - 1, 1)); КонецЦикла; Четн = Четн * 3; КонтЦифра = 10 - (Четн + Нечетн) % 10; Если КонтЦифра = 10 Тогда КонтЦифра = 0; КонецЕсли; Возврат Лев(ШтрихКод,12) + СокрЛП(Строка(КонтЦифра)); // Возврат ШтрихКод - ШтрихКод%10 + КонтЦифра; КонецФункции
// ----------------------------------------- Функция ПолучитьКомбинацию(ИсхЧисло,Тип="X") // Символы из таблицы для нижнего расположения Если Тип = "A" Тогда Возврат(Строка(ИсхЧисло)); ИначеЕсли Тип = "B" Тогда Возврат(Симв(ИсхЧисло + 65)); ИначеЕсли Тип = "C" Тогда Возврат(Симв(ИсхЧисло + 97)); Иначе Возврат(Симв(ИсхЧисло + 35)); КонецЕсли; КонецФункции
// ------------------------------ Функция ПолучитьШтрихКод (ШКИсх) Экспорт // Возвращает печатный штрих-код // для переданной строки символов // ШК = Число (ШКИсх); ШК = ВычислитьШтрихКод (ШКИсх); СтрокаШК =""; // EAN13 СтрокаШК = ПолучитьКомбинацию(Число(Сред(ШК,1,1))); //13 СтрокаШК = СтрокаШК + "!"; СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,2,1)),"A"); //12 Если Число(Сред(ШК,1,1)) < 4 Тогда //11 СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,3,1)),"A"); Иначе СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,3,1)),"B"); КонецЕсли; //10 Если ((Число(Сред(ШК,1,1)) = 0) ИЛИ (Число(Сред(ШК,1,1)) = 4) ИЛИ (Число(Сред(ШК,1,1)) = 7) ИЛИ (Число(Сред(ШК,1,1)) = 8)) Тогда СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,4,1)),"A"); Иначе СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,4,1)),"B"); КонецЕсли; //09 Если ((Число(Сред(ШК,1,1)) = 0) ИЛИ (Число(Сред(ШК,1,1)) = 1) ИЛИ (Число(Сред(ШК,1,1)) = 4) ИЛИ (Число(Сред(ШК,1,1)) =5) ИЛИ (Число(Сред(ШК,1,1)) =9)) Тогда СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,5,1)),"A"); Иначе СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,5,1)),"B"); КонецЕсли; //08 Если ((Число(Сред(ШК,1,1)) = 0) ИЛИ (Число(Сред(ШК,1,1)) = 2) ИЛИ (Число(Сред(ШК,1,1)) = 5) ИЛИ (Число(Сред(ШК,1,1)) = 6) ИЛИ (Число(Сред(ШК,1,1)) = 7 )) Тогда СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,6,1)),"A"); Иначе СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,6,1)),"B"); КонецЕсли; //07 Если ((Число(Сред(ШК,1,1)) = 0) ИЛИ (Число(Сред(ШК,1,1)) = 3) ИЛИ (Число(Сред(ШК,1,1)) = 6) ИЛИ (Число(Сред(ШК,1,1)) = 8) ИЛИ (Число(Сред(ШК,1,1)) = 9)) Тогда СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,7,1)),"A"); Иначе СтрокаШК = СтрокаШК + ПолучитьКомбинацию(Число(Сред(ШК,7,1)),"B"); КонецЕсли; СтрокаШК = СтрокаШК + "-" + ПолучитьКомбинацию(Число(Сред(ШК,8,1)), "C") + // 08 ПолучитьКомбинацию(Число(Сред(ШК,9,1)), "C") + // 09 ПолучитьКомбинацию(Число(Сред(ШК,10,1)),"C") + // 10 ПолучитьКомбинацию(Число(Сред(ШК,11,1)),"C") + // 11 ПолучитьКомбинацию(Число(Сред(ШК,12,1)),"C") + // 12 ПолучитьКомбинацию(Число(Сред(ШК,13,1)),"C") + // 13 "!"; Возврат(СтрокаШК); КонецФункции
|