//************************************************* Функция NumberToUpperChar( Num ) UpperCharSet = "ABCDEFGHIJ"; Num = Число(Прав(Num,1)); Стр = Сред(UpperCharSet, Num + 1, 1); Возврат Стр; КонецФункции //************************************************* Функция NumberToLowerChar( Num ) LowerCharSet = "abcdefghij"; Num = Число(Прав(Num,1)); Стр = Сред(LowerCharSet, Num + 1, 1); Возврат Стр; КонецФункции //************************************************* Функция EAN13CodeGenerate(код) // Проверки //Если ТипЗначения(код) <> 1 //Тогда // Сообщить("Код для EAN13 должен числовым."); // Возврат ""; //КонецЕсли; Если СтрДлина(код) > 13 Тогда Сообщить("Код для EAN13 должен быть длинной не более 12 символов."); Возврат ""; КонецЕсли; // Дополнение лидирующими пробелами //код = ДобавитьСлева(Строка(код),13,"0"); // Добавление кода четности - для кода, дополненого слева "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) + NumberToUpperChar(Сред(левстр,3,1)) + Сред(левстр,4,1) + NumberToUpperChar(Сред(левстр,5,1)) + NumberToUpperChar(Сред(левстр,6,1)); ИначеЕсли ПервыйФлаг = 2 Тогда // 2 A A B B A B левкод = "%!" + Лев(левстр,1) + Сред(левстр,2,1) + NumberToUpperChar(Сред(левстр,3,1)) + NumberToUpperChar(Сред(левстр,4,1)) + Сред(левстр,5,1) + NumberToUpperChar(Сред(левстр,6,1)); ИначеЕсли ПервыйФлаг = 3 Тогда // 3 A A B B B A левкод = "&!" + Лев(левстр,1) + Сред(левстр,2,1) + NumberToUpperChar(Сред(левстр,3,1)) + NumberToUpperChar(Сред(левстр,4,1)) + NumberToUpperChar(Сред(левстр,5,1)) + Сред(левстр,6,1); ИначеЕсли ПервыйФлаг = 4 Тогда // 4 A B A A B B левкод = "'!" + Лев(левстр,1) + NumberToUpperChar(Сред(левстр,2,1)) + Сред(левстр,3,1) + Сред(левстр,4,1) + NumberToUpperChar(Сред(левстр,5,1)) + NumberToUpperChar(Сред(левстр,6,1)); ИначеЕсли ПервыйФлаг = 5 Тогда // 5 A B B A A B левкод = "(!" + Лев(левстр,1) + NumberToUpperChar(Сред(левстр,2,1)) + NumberToUpperChar(Сред(левстр,3,1)) + Сред(левстр,4,1) + Сред(левстр,5,1) + NumberToUpperChar(Сред(левстр,6,1)); ИначеЕсли ПервыйФлаг = 6 Тогда // 6 A B B B A A левкод = ")!" + Лев(левстр,1) + NumberToUpperChar(Сред(левстр,2,1)) + NumberToUpperChar(Сред(левстр,3,1)) + NumberToUpperChar(Сред(левстр,4,1)) + Сред(левстр,5,1) + Сред(левстр,6,1); ИначеЕсли ПервыйФлаг = 7 Тогда // 7 A B A B A B левкод = "*!" + Лев(левстр,1) + NumberToUpperChar(Сред(левстр,2,1)) + Сред(левстр,3,1) + NumberToUpperChar(Сред(левстр,4,1)) + Сред(левстр,5,1) + NumberToUpperChar(Сред(левстр,6,1)); ИначеЕсли ПервыйФлаг = 8 Тогда // 8 A B A B B A левкод = "+!" + Лев(левстр,1) + NumberToUpperChar(Сред(левстр,2,1)) + Сред(левстр,3,1) + NumberToUpperChar(Сред(левстр,4,1)) + NumberToUpperChar(Сред(левстр,5,1)) + Сред(левстр,6,1); ИначеЕсли ПервыйФлаг = 9 Тогда // 9 A B B A B A левкод = ",!" + Лев(левстр,1) + NumberToUpperChar(Сред(левстр,2,1)) + NumberToUpperChar(Сред(левстр,3,1)) + Сред(левстр,4,1) + NumberToUpperChar(Сред(левстр,5,1)) + Сред(левстр,6,1); КонецЕсли; // Получение строки - результата кодстр = левкод + "-" + правкод + "!"; Возврат кодстр; КонецФункции