Обновить

Комментарии 3

Хорошая и практичная заметка. Контрольные суммы это действительно простой и эффективный способ отсечь мусор до обращения в ЕГРЮЛ и снизить нагрузку на API. Важно, что это не проверка существования данных, а только фильтр корректности формата. Валидный номер всё равно может не принадлежать реальной компании. Отдельно ценно, что такая проверка улучшает UX, пользователь сразу получает понятную ошибку, а не не найдено.

Такая здоровенная статья…
Я когда-то давно делал валидатор номера СНИЛС просто по википедии, получилось это

function validateSNILS(number) {
	number = number.toString().replace(/\D/g, '')

	// Цифр всегда 11
	if (number.length != 11)
		return false

	// Трёх одинаковых цифр подряд быть не может
	if (/(\d)\1\1/.test(number.toString()))
		return false

	const controlCode = Number(number.substr(-2))
	let hashCode = number.substr(0, 9)
		.split('')
		.map((N, idx) => Number(N) * (9 - idx))
		.reduce((sum, N) => sum + N)

	if (hashCode == 100)
		hashCode = 0

	return controlCode == hashCode % 101
}

Не знаю, зачем вокруг этого стоит писать 5 абзацев текста и высасывать статью из пальца.

Году в 2000-м мой работодатель попросил меня сделать генератор номеров СНИЛС. У них была дикая текучка и на конец года образовывалось пара сотен лиц, принятых и уволившихся без номера. Я на всякий случай спросил, а не прилетит ли нам за это, на что директор махнул рукой. Ну я и написал. Самое трудное было с контрольной суммой. Интернетов тогда в нынешнем понимании не было и узнать принцип было неоткуда. Помогли , насколько помнится, конспекты лекций по прикладной теории информации из бауманского и алгоритм расчета я нашел. Через некоторое время главбух, потупив глаза, сказала, что со мной хотят поговорить в пенсионном. Там мне в лоб сказали, что после подгрузки нашей шараги в общую базу там всё рушится к чертям и нет ли у меня предположений почему. Я только пожал плечами - хз, откуда мне знать. В конторе я всё сказал, что я думаю насчет этой подставы. Директор на глаза не показывался и больше про это не вспоминали.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации