0
подскажите пожалуйста 1с из которой взят код :
Функция БарКод(Вход, БазаМодеС = 6)
Если Вход = "" Тогда
Возврат "";
КонецЕсли;
АскиБар =
"155515551449485845458494854548584944056416452065425461560506542164524212245605641254614650" +
"11919191108980988109881889018890898001:0928120290:18212211829021281:0122209281:01218290:10" +
"2305<0;0004=0<540=4<1<05<4105<0=441<4=0<14<50=4050<320=04830047407443074434470344704740113" +
"13131100;0838030380;0308380023032203302";
мсВых = Новый Массив;
Дл = СтрДлина(СокрЛП(Вход));
ТекСимвол = КодСимвола(Сред(Вход, 1, 1));
ТипТекСимвол = ТипСимвол(ТекСимвол);
Если Дл > 1 тогда
СлСимвол = КодСимвола(Сред(Вход, 2, 1));
ТипСлСимвол = ТипСимвол(СлСимвол);
Иначе
ТипСлСимвол = 2;
КонецЕсли;
Моде = ТипТекСимвол;
Если (ТипТекСимвол = 3) И (ТипСлСимвол = 3) Тогда
Моде = 3;
КонецЕсли;
мсВых.Добавить(102 + Моде);
Вых = Символ(64 + Моде);
Для Сч = 1 По Дл Цикл
ТекСимвол = КодСимвола(Сред(Вход, Сч, 1));
Если ТекСимвол > 127 тогда
Продолжить;
КонецЕсли;
ТипТекСимвол = ТипСимвол(ТекСимвол);
Если ТипТекСимвол <> Моде Тогда
Если ТипТекСимвол < 3 Тогда
Если Моде = 1 Тогда
мсВых.Добавить(100);
Иначе
мсВых.Добавить(101);
КонецЕсли;
Моде = ТипТекСимвол;
Иначе
ДлМ = ?(Дл < Сч + БазаМодеС - 1, Дл, Сч + БазаМодеС - 1);
СчЦ = 0;
Для СчМ = Сч По ДлМ Цикл
МодМ = ТипСимвол(КодСимвола(Сред(Вход, СчМ, 1)));
Если МодМ = 3 Тогда
СчЦ = СчЦ + 1;
Продолжить;
Иначе
СчЦ = 0;
Прервать;
КонецЕсли;
КонецЦикла;
Если СчЦ - БазаМодеС = 0 Тогда
Моде = 3;
мсВых.Добавить(99);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Моде = 3 Тогда
СлСимвол = КодСимвола(Сред(Вход, Сч + 1, 1));
ТипСлСимвол = ТипСимвол(СлСимвол);
Если (Сч = Дл) Или (ТипТекСимвол <> 3)Или (ТипСлСимвол <> 3) тогда
Моде = 2;
мсВых.Добавить(100);
Иначе
Если (ТипТекСимвол <> 3) Или (ТипСлСимвол <> 3) Тогда
Сообщить("Ош." + Сч + " " + ТекСимвол+" " + СлСимвол);
Иначе
мсВых.Добавить(Число(Символ(ТекСимвол) + Символ(СлСимвол)));
Сч = Сч + 1;
Продолжить;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Моде = 1 Тогда
мсВых.Добавить(ТекСимвол + 64);
Иначе
мсВых.Добавить(ТекСимвол - 32);
КонецЕсли;
КонецЦикла;
Сум = 0;
Ном = 0;
Для Каждого элВых Из мсВых Цикл
Если Ном > 0 Тогда
Сум = (Сум + элВых * Ном) % 103;
Вых = Вых + Сред(АскиБар,(элВых + 1) * 3 - 2, 3);
Иначе
Сум = элВых % 103;
КонецЕсли;
Ном = Ном + 1;
КонецЦикла;
Возврат Вых + Сред(АскиБар, (Сум + 1) * 3 - 2, 3) + "@";
КонецФункции