Функция Code_Char(A)
S = "";
i = 0;
B = "";
Если A = "211412" Тогда
S = "A";
ИначеЕсли A = "211214" Тогда
S = "B";
ИначеЕсли A = "211232" Тогда
S = "C";
ИначеЕсли A = "2331112" Тогда
S = "@";
Иначе
S = "";
Для i = 0 По СтрДлина(A) / 2 - 1 Цикл
B = Сред(A, 2 * i + 1, 2);
Если B = "11" Тогда
S = S + "" + "0";
ИначеЕсли B = "21" Тогда
S = S + "" + "1";
ИначеЕсли B = "31" Тогда
S = S + "" + "2";
ИначеЕсли B = "41" Тогда
S = S + "" + "3";
ИначеЕсли B = "12" Тогда
S = S + "" + "4";
ИначеЕсли B = "22" Тогда
S = S + "" + "5";
ИначеЕсли B = "32" Тогда
S = S + "" + "6";
ИначеЕсли B = "42" Тогда
S = S + "" + "7";
ИначеЕсли B = "13" Тогда
S = S + "" + "8";
ИначеЕсли B = "23" Тогда
S = S + "" + "9";
ИначеЕсли B = "33" Тогда
S = S + "" + ":";
ИначеЕсли B = "43" Тогда
S = S + "" + ";";
ИначеЕсли B = "14" Тогда
S = S + "" + "<";
ИначеЕсли B = "24" Тогда
S = S + "" + "=";
ИначеЕсли B = "34" Тогда
S = S + "" + ">";
ИначеЕсли B = "44" Тогда
S = S + "" + "?";
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат S;
КонецФункции
Функция Code_128_ID(ID) Экспорт
Если ID = 0 Тогда S = "212222";
ИначеЕсли ID = 1 Тогда S = "222122";
ИначеЕсли ID = 2 Тогда S = "222221";
ИначеЕсли ID = 3 Тогда S = "121223";
ИначеЕсли ID = 4 Тогда S = "121322";
ИначеЕсли ID = 5 Тогда S = "131222";
ИначеЕсли ID = 6 Тогда S = "122213";
ИначеЕсли ID = 7 Тогда S = "122312";
ИначеЕсли ID = 8 Тогда S = "132212";
ИначеЕсли ID = 9 Тогда S = "221213";
ИначеЕсли ID = 10 Тогда S = "221312";
ИначеЕсли ID = 11 Тогда S = "231212";
ИначеЕсли ID = 12 Тогда S = "112232";
ИначеЕсли ID = 13 Тогда S = "122132";
ИначеЕсли ID = 14 Тогда S = "122231";
ИначеЕсли ID = 15 Тогда S = "113222";
ИначеЕсли ID = 16 Тогда S = "123122";
ИначеЕсли ID = 17 Тогда S = "123221";
ИначеЕсли ID = 18 Тогда S = "223211";
ИначеЕсли ID = 19 Тогда S = "221132";
ИначеЕсли ID = 20 Тогда S = "221231";
ИначеЕсли ID = 21 Тогда S = "213212";
ИначеЕсли ID = 22 Тогда S = "223112";
ИначеЕсли ID = 23 Тогда S = "312131";
ИначеЕсли ID = 24 Тогда S = "311222";
ИначеЕсли ID = 25 Тогда S = "321122";
ИначеЕсли ID = 26 Тогда S = "321221";
ИначеЕсли ID = 27 Тогда S = "312212";
ИначеЕсли ID = 28 Тогда S = "322112";
ИначеЕсли ID = 29 Тогда S = "322211";
ИначеЕсли ID = 30 Тогда S = "212123";
ИначеЕсли ID = 31 Тогда S = "212321";
ИначеЕсли ID = 32 Тогда S = "232121";
ИначеЕсли ID = 33 Тогда S = "111323";
ИначеЕсли ID = 34 Тогда S = "131123";
ИначеЕсли ID = 35 Тогда S = "131321";
ИначеЕсли ID = 36 Тогда S = "112313";
ИначеЕсли ID = 37 Тогда S = "132113";
ИначеЕсли ID = 38 Тогда S = "132311";
ИначеЕсли ID = 39 Тогда S = "211313";
ИначеЕсли ID = 40 Тогда S = "231113";
ИначеЕсли ID = 41 Тогда S = "231311";
ИначеЕсли ID = 42 Тогда S = "112133";
ИначеЕсли ID = 43 Тогда S = "112331";
ИначеЕсли ID = 44 Тогда S = "132131";
ИначеЕсли ID = 45 Тогда S = "113123";
ИначеЕсли ID = 46 Тогда S = "113321";
ИначеЕсли ID = 47 Тогда S = "133121";
ИначеЕсли ID = 48 Тогда S = "313121";
ИначеЕсли ID = 49 Тогда S = "211331";
ИначеЕсли ID = 50 Тогда S = "231131";
ИначеЕсли ID = 51 Тогда S = "213113";
ИначеЕсли ID = 52 Тогда S = "213311";
ИначеЕсли ID = 53 Тогда S = "213131";
ИначеЕсли ID = 54 Тогда S = "311123";
ИначеЕсли ID = 55 Тогда S = "311321";
ИначеЕсли ID = 56 Тогда S = "331121";
ИначеЕсли ID = 57 Тогда S = "312113";
ИначеЕсли ID = 58 Тогда S = "312311";
ИначеЕсли ID = 59 Тогда S = "332111";
ИначеЕсли ID = 60 Тогда S = "314111";
ИначеЕсли ID = 61 Тогда S = "221411";
ИначеЕсли ID = 62 Тогда S = "431111";
ИначеЕсли ID = 63 Тогда S = "111224";
ИначеЕсли ID = 64 Тогда S = "111422";
ИначеЕсли ID = 65 Тогда S = "121124";
ИначеЕсли ID = 66 Тогда S = "121421";
ИначеЕсли ID = 67 Тогда S = "141122";
ИначеЕсли ID = 68 Тогда S = "141221";
ИначеЕсли ID = 69 Тогда S = "112214";
ИначеЕсли ID = 70 Тогда S = "112412";
ИначеЕсли ID = 71 Тогда S = "122114";
ИначеЕсли ID = 72 Тогда S = "122411";
ИначеЕсли ID = 73 Тогда S = "142112";
ИначеЕсли ID = 74 Тогда S = "142211";
ИначеЕсли ID = 75 Тогда S = "241211";
ИначеЕсли ID = 76 Тогда S = "221114";
ИначеЕсли ID = 77 Тогда S = "413111";
ИначеЕсли ID = 78 Тогда S = "241112";
ИначеЕсли ID = 79 Тогда S = "134111";
ИначеЕсли ID = 80 Тогда S = "111242";
ИначеЕсли ID = 81 Тогда S = "121142";
ИначеЕсли ID = 82 Тогда S = "121241";
ИначеЕсли ID = 83 Тогда S = "114212";
ИначеЕсли ID = 84 Тогда S = "124112";
ИначеЕсли ID = 85 Тогда S = "124211";
ИначеЕсли ID = 86 Тогда S = "411212";
ИначеЕсли ID = 87 Тогда S = "421112";
ИначеЕсли ID = 88 Тогда S = "421211";
ИначеЕсли ID = 89 Тогда S = "212141";
ИначеЕсли ID = 90 Тогда S = "214121";
ИначеЕсли ID = 91 Тогда S = "412121";
ИначеЕсли ID = 92 Тогда S = "111143";
ИначеЕсли ID = 93 Тогда S = "111341";
ИначеЕсли ID = 94 Тогда S = "131141";
ИначеЕсли ID = 95 Тогда S = "114113";
ИначеЕсли ID = 96 Тогда S = "114311";
ИначеЕсли ID = 97 Тогда S = "411113";
ИначеЕсли ID = 98 Тогда S = "411311";
ИначеЕсли ID = 99 Тогда S = "113141";
ИначеЕсли ID = 100 Тогда S = "114131";
ИначеЕсли ID = 101 Тогда S = "311141";
ИначеЕсли ID = 102 Тогда S = "411131";
ИначеЕсли ID = 103 Тогда S = "211412";
ИначеЕсли ID = 104 Тогда S = "211214";
ИначеЕсли ID = 105 Тогда S = "211232";
ИначеЕсли ID = 106 Тогда S = "2331112";
КонецЕсли;
Возврат S;
КонецФункции
Функция Code_128(A)
BCode = Новый Массив(1024); //(0 To 1023) As Integer
BInd = 0; //As Integer
CurMode = ""; // As String
Ch = 0; // As Integer
Ch2 = 0; //As Integer
i = 1; //As Integer
LenA = 0; //As Integer
CCode = 0; //As Integer
S = ""; //As String
BarArray = Новый Массив;//As Variant
//Собираем строку кодов
LenA = СтрДлина(A);
Пока i <= LenA Цикл
//Текущий символ в строке
Ch = КодСимвола(Сред(A, i, 1),1);
i = i + 1;
//Разбираем только символы от 0 до 127
If Ch <= 127 Then
//Следующий символ
Если i <= LenA Тогда
Ch2 = КодСимвола(Сред(A, i, 1), 1);
Иначе
Ch2 = 0;
КонецЕсли;
//Пара цифр - режим С
Если (48 <= Ch) И (Ch <= 57) И (48 <= Ch2) И (Ch2 <= 57) Тогда
i = i + 1;
Если BInd = 0 Тогда
//Начало с режима С
CurMode = "C";
BCode[BInd] = 105;
BInd = BInd + 1;
ИначеЕсли CurMode <> "C" Тогда
//Переключиться на режим С
CurMode = "C";
BCode[BInd] = 99;
BInd = BInd + 1;
КонецЕсли;
//Добавить символ режима С
BCode[BInd] = Число(Символ(Ch) + "" + Символ(Ch2));
BInd = BInd + 1;
Иначе
Если BInd = 0 Тогда
Если Ch < 32 Тогда
//Начало с режима A
CurMode = "A";
BCode[BInd] = 103;
BInd = BInd + 1;
Иначе
//Начало с режима B
CurMode = "B";
BCode[BInd] = 104;
BInd = BInd + 1;
КонецЕсли;
КонецЕсли;
//Переключение по надобности в режим A
Если (Ch < 32) И (CurMode <> "A") Тогда
CurMode = "A";
BCode[BInd] = 101;
BInd = BInd + 1;
//Переключение по надобности в режим B
ИначеЕсли ((64 <= Ch) И (CurMode <> "B")) ИЛИ (CurMode = "C") Тогда
CurMode = "B";
BCode[BInd] = 100;
BInd = BInd + 1;
КонецЕсли;
//Служебные символы
Если (Ch < 32) Тогда
BCode[BInd] = Ch + 64;
BInd = BInd + 1;
//Все другие символы
Иначе
BCode[BInd] = Ch - 32;
BInd = BInd + 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
//точный аналог DIV: Цел(А/Б)
//точный аналог MOD: А%Б
//Подсчитываем контрольную сумму
CCode = BCode[0]%103;
Для i = 1 По BInd - 1 Цикл
CCode = (CCode + BCode[i] * i)%103;
КонецЦикла;
BCode[BInd] = CCode;
BInd = BInd + 1;
//Завершающий символ
BCode[BInd] = 106;
BInd = BInd + 1;
//Собираем строку символов шрифта
//BarArray = Новый Массив("155", "515", "551", "449", "485", "845", "458", "494", "854",
// "548", "584", "944", "056", "416", "452", "065", "425", "461", "560", "506",
// "542", "164", "524", "212", "245", "605", "641", "254", "614", "650", "119",
// "191", "911", "089", "809", "881", "098", "818", "890", "188", "908", "980",
// "01:", "092", "812", "029", "0:1", "821", "221", "182", "902", "128", "1:0",
// "122", "209", "281", ":01", "218", "290", ":10", "230", "5<0", ";00", "04=",
// "0<5", "40=", "4<1", "<05", "<41", "05<", "0=4", "41<", "4=0", "<14", "<50",
// "=40", "50<", "320", "=04", "830", "047", "407", "443", "074", "434", "470",
// "344", "704", "740", "113", "131", "311", "00;", "083", "803", "038", "0;0",
// "308", "380", "023", "032", "203", "302", "A", "B", "C", "@");
S = "";
Для i = 0 По BInd - 1 Цикл
S = S + "" + Code_Char(Code_128_ID(BCode[i]));
//S = S + "" + BarArray[BCode[I]];
КонецЦикла;
Возврат S;
КонецФункции
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот