Каталог решений - v7: Алгоритм проверки валидности ИИН/БИН (Казахстан)

v7: Алгоритм проверки валидности ИИН/БИН (Казахстан)

v7: Алгоритм проверки валидности ИИН/БИН (Казахстан)

В наличии

До настоящего времени с проверкой валидности ИИН/БИН была довольно большая проблема. Хоть алгоритм и очень простой, но его просто никто не знал. Предлагаю вашему вниманию его

Алгоритм основан на статье: http://www.gotdotnet.ru/blogs/kidinfo/7516/
За что огромное спасибо автору

Категория:

Описание

Функция глВалидностьИН(Значение) Экспорт
// Вычисление контрольного разряда
    
    Статус = 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;
        КонецЕсли;
    КонецЕсли;
    
    Возврат Статус;
КонецФункции // глВалидностьИН
has been added to your cart:
Оформление заказа