Функция глВалидностьИН(Значение) Экспорт
// Вычисление контрольного разряда
Статус = 0;
//Проверка на длину ИИН/БИН
Если СтрДлина(СокрЛП(Значение))<12 Тогда
Сообщить("Количество знаков в ИИН/БИН меньше 12!","!!!");
// проверка на одиниковость всех цифр
ИначеЕсли СтрЧислоВхождений(Значение, Лев(Значение,1))=12 Тогда
Сообщить("Цифра " + Лев(Значение,1) + " повторяется 12 раз!","!!!");
// проверяем ИИН/БИН на корректность (!!! старый алгоритм, не используется !!!)
// a12=(1*a1+3*a2+7*a3+9*а4+3*а5+1*а6+9*a7+7*a8+3*a9+9*a10+1*a11) mod 10,
Иначе
ПодстрокаИН11 = Лев(Значение,11); // копируем первые 11 символов
КонтрольноеЗначение = Число(Сред(Значение,12,1));
//*** Это неправильный алгоритм, использовавшийся ранее в типовых ***
//СуммаРазрядов = 1*Сред(ПодстрокаИН11,1,1)+
// 3*Сред(ПодстрокаИН11,2,1)+
// 7*Сред(ПодстрокаИН11,3,1)+
// 9*Сред(ПодстрокаИН11,4,1)+
// 3*Сред(ПодстрокаИН11,5,1)+
// 1*Сред(ПодстрокаИН11,6,1)+
// 9*Сред(ПодстрокаИН11,7,1)+
// 7*Сред(ПодстрокаИН11,8,1)+
// 3*Сред(ПодстрокаИН11,9,1)+
// 9*Сред(ПодстрокаИН11,10,1)+
// 1*Сред(ПодстрокаИН11,11,1);
//ВычисленноеКонтрольноеЗначение = СуммаРазрядов % 10;
СуммаРазрядов = 1*Сред(ПодстрокаИН11,1,1)+
2*Сред(ПодстрокаИН11,2,1)+
3*Сред(ПодстрокаИН11,3,1)+
4*Сред(ПодстрокаИН11,4,1)+
5*Сред(ПодстрокаИН11,5,1)+
6*Сред(ПодстрокаИН11,6,1)+
7*Сред(ПодстрокаИН11,7,1)+
8*Сред(ПодстрокаИН11,8,1)+
9*Сред(ПодстрокаИН11,9,1)+
10*Сред(ПодстрокаИН11,10,1)+
11*Сред(ПодстрокаИН11,11,1);
ВычисленноеКонтрольноеЗначение = СуммаРазрядов % 11;
Если ВычисленноеКонтрольноеЗначение = 10 Тогда
СуммаРазрядов = 3*Сред(ПодстрокаИН11,1,1)+
4*Сред(ПодстрокаИН11,2,1)+
5*Сред(ПодстрокаИН11,3,1)+
6*Сред(ПодстрокаИН11,4,1)+
7*Сред(ПодстрокаИН11,5,1)+
8*Сред(ПодстрокаИН11,6,1)+
9*Сред(ПодстрокаИН11,7,1)+
10*Сред(ПодстрокаИН11,8,1)+
11*Сред(ПодстрокаИН11,9,1)+
1*Сред(ПодстрокаИН11,10,1)+
2*Сред(ПодстрокаИН11,11,1);
ВычисленноеКонтрольноеЗначение = СуммаРазрядов % 11;
КонецЕсли;
Если (ВычисленноеКонтрольноеЗначение = КонтрольноеЗначение) И (СуммаРазрядов<>0) Тогда
Сообщить("Введенный ИИН/БИН корректен!");
Статус = 1;
Иначе
Сообщить("Введенный ИИН/БИН некорректен!","!!!");
Статус = 0;
КонецЕсли;
КонецЕсли;
Возврат Статус;
КонецФункции // глВалидностьИН
v7: Алгоритм проверки валидности ИИН/БИН (Казахстан)
20.05.10
Разработка - Математика и алгоритмы
До настоящего времени с проверкой валидности ИИН/БИН была довольно большая проблема. Хоть алгоритм и очень простой, но его просто никто не знал. Предлагаю вашему вниманию его
Алгоритм основан на статье: http://www.gotdotnet.ru/blogs/kidinfo/7516/
За что огромное спасибо автору
Алгоритм основан на статье: http://www.gotdotnet.ru/blogs/kidinfo/7516/
За что огромное спасибо автору