Проверка корректности snil онлайн: простой и быстрый способ

Эта возможность (с возможными незначительными изменениями) была добавлена в библиотеку net.ksunilib с версии 1. 0. 38. Пространство имен: komesoftunicl. tools Класс: база данных ksnumbervalidator. Обычно у каждого числа или идентификатора есть специальный контрольный номер и алгоритм контроля корректности ввода. Сегодня мы знаем один из таких алгоритмов. Затем проверяем снилс. Да-да, ту самую зеленую карту в паспорте. Российские снилсы — это аналог американской карты социального страхования. По сути, снилс состоит из трех трехзначных групп и еще двух символьных групп контрольных номеров. Контрольный номер рассчитывается по следующему алгоритму

(0) Все нечисловые символы игнорируются. 1) Перемножить позиции всех цифр в snil (т.е. 9 цифр основного номера без контрольного номера) (Важно: позиции цифр вычисляются справа налево, а не как строка символов. 3) Если сумма меньше 100, она используется как контрольный номер. 4) Если итог равен 100 или 101, контрольный итог равен нулю. (В этом случае в строке 5 записывается ’00’). Если итог больше 101, он делится на 101 и шаги с 3 по 5 повторяются для остальных отделов.

Чтобы не реализовывать каждый раз разные функции управления, в библиотеке были созданы специальные статические классы. Пока это требует времени и усилий, мы добавляем новые типы элементов управления. А сейчас мы сосредоточимся на проверке количества снилсов и подсчете их контрольной суммы.

Поэтому нам нужны три метода: метод SnilsValidate(), который возвращает только true или false в зависимости от того, является ли число действительным или нет; метод Snilscontolcalc(), который вычисляет и возвращает контрольную сумму в виде числа; и snilscheckcontrolsumsum обратно в частный метод. (), который выполняет процедуру сравнения, описанную выше. Реализуйте snilsvalidate().

 Publicboolean snilsvalidate (string snils)< String workSnils = KSStringProcessor.OnlyDigits(snils); Boolean result = Ошибка.; if(worksnils. lenge == 9)< if(snilscontolcalc(worksnils) &gt; -1)< result = Истина.; > > Другое. if(worksnils. lenge == 11)< Int32 controlSum = SNILSContolCalc(workSnils); Int32 strControlSum = Int32.Parse(workSnils.Substring(9, 2)); if(controlsum == strcontrolsum)< result = Истина.; > > Другое.< Бросок. НовыйИсключение (string. format())'Неправильное число snil. Числовой! (Доступны только 9 или 11 цифр!)», workSnils.Length)); > Назад.Результат? &gt;

Логика метода проста. Метод принимает алфавитно-цифровые символы, включая (предположительно) snils. Затем он использует ksstringprocessor.onlydigits () для очистки строки ввода без цифр и проверки ее длины. Если длина строки составляет 9 символов, то это число sunil без контрольной суммы, если 11 символов, то это число sunil с контрольной суммой, а при других длинах строк метод вылетает в исключение. Таким образом, как мы видим, при длине строки в 9 символов для проверки нужно просто вычислить контрольную сумму. После вычисления мы считаем число валидным. Если длина буквенно-цифровой строки составляет 11 символов, то действия немного усложняются. Нужно запомнить два последних символа, вычислить контрольную сумму оставшихся девяти символов и сравнить два значения. Если они равны, то номер действителен. Здесь необходимо реализовать функцию для вычисления контрольной суммы.

 Public Staticint32 snilscontolcalc (string snils)< String workSnils = KSStringProcessor.OnlyDigits(snils); if(worksnils. lenge!= 9 &amp; &amp; worksnils. length!= 11)< Бросок. НовыйИсключение (string. format())'Неправильное число snil. Числовой! (Доступны только 9 или 11 цифр!)», workSnils.Length)); > if(worksnils. lenge == 11)< workSnils = workSnils.Substring(0,9); >int32 totalsum = 0,for.(int32 i = worksnils. lenge-1, j = 0; i &gt; = 0; i-, j ++)< Int32 digit = Int32.Parse(workSnils[i].ToString()); totalSum += digit*(j+1); >Назад.snilscheckcontrolsum (totalsum); &gt;.

Этот метод может использоваться как вместе с предыдущим, так и самостоятельно. Поэтому его следует применять вместо той же проверки длины строки. Затем в цикле A-Two с использованием двух маркеров I и J девятизначный символьный номер прогоняется через символы и вычисляется сумма цифр. Последний оставшийся метод — snilscheckcontrolsum ().

  Staticint32 snilscheckcontrolsum (int32 _controlsum)< Int32 result; if(_Controlsum)< 100)< result = _controlSum; >Другое. if(_Controlsum)Другое. < Int32 balance = _controlSum%101; result = SNILSCheckControlSum(balance); >Назад.Результат? &gt;

Метод определяет диапазон глаза, делит его на 101, если он находится в третьем диапазоне, и вызывает сам себя.

Советуем прочитать:  Как выстроить правильную правовую позицию

Результат: метод контролирует количество импортированных снилсов на валидность и вычисляет их контрольную сумму. Позже были созданы методы для линейных кодов EAN-8 и EAN-13, а также для ИНН и ОГРН.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector