Проверка ОГРН и ОГРНИП на JavaScript

Чтобы блог не пустовал, выложу тут простенький скрипт проверки на валидность ОГРН и ОГРНИП(больше на 2 знака). Вдруг кто-нибудь будет искать готовый =)

ОГРН (основной государственный регистрационный номер) — государственный регистрационный номер записи о создании юридического лица либо записи о первом представлении в соответствии с Федеральным законом Российской Федерации «О государственной регистрации юридических лиц» сведений о юридическом лице, зарегистрированном до введения в действие указанного Закона (пункт 8 Правил ведения Единого государственного реестра юридических лиц).

Подробнее

Вся проверка сводится к вычислению остатка от деления и сравнения его с последним знаком в числе (крайним правым). Если остаток равен 10 то последним знаком должен быть ноль.

function checkOgrn(chekedValue) {
	//дальше работаем со строкой
	chekedValue += '';
	
	//для ОГРН в 13 знаков
	if(chekedValue.length == 13 && 
		(chekedValue.slice(12,13) == ((chekedValue.slice(0,-1))%11 + '').slice(-1))){
		return true;
		
	//для ОГРН в 15 знаков
	}else if(chekedValue.length == 15 && 
		(chekedValue.slice(14,15) == ((chekedValue.slice(0,-1))%13 + '').slice(-1))){
		return true;
		
	}else{
		return false;
	}
}

Версия для PHP находится тут

6 комментариев

InoY

Спустя два года он таки кому-то понадобился. Пост писал не зря.

Ответить

Марат
Dmitry

Добрый день, спасибо за статью, очень помогли ваши работы, однако в данном примере у вас есть ошибочка:
При chekedValue.slice(-1) так же получаем последний элемент, а значит всегда верно, при необходимом количестве элементов.
У себя исправил на chekedValue.slice(0,12) и chekedValue.slice(0,14) соответственно.

Ответить

Морозов Максим

У меня сейчас работает вот такой код:
*обновил код в статье*

Ответить

Сергей

В поиске правильного ответа, наткнулся на Ваш алгоритм, и вот что я Вас скажу, проверьте следующий ОГРН 1036300220332 (реально существующей организации) и Вы будите неприятно удивлены. Если кто-то знает варианты решения, милости просим..

Ответить

Морозов Максим

Любопытный случай. Формула в статье верная.

Остаток от деления числа 103630022033 на 11 равен 10, т.е. контрольное число (последняя цифра) должна быть равна нулю. Но это не так. Т.е. налоговая выдала некорректный ОГРН.

Проверить подсчеты легко в вольфраме

Думаю ООО Сантэл очень «повезло» с номером =)

Ответить

Ваш отзыв

logo