gifts2017

Контрольный разряд ИНН

Опубликовал Олег Никоноров (nikolega) в раздел Программирование - Универсальные функции

Хотите проверить правильность контрольных разрядов в ИНН контрагента ? Эта обработка поможет Вам в этом.
 
Хотите проверить правильность контрольных разрядов в ИНН контрагента? Или сгенерировать новый ИНН для тестовых задач? Эта обработка поможет Вам в этом.
1. Для юр.лиц:
Введите первые 9 символов в поле ИНН и нажмите кнопку "Получить" - контрольный разряд будет отображен в соседнем поле.
2. Для ИП:
Введите первые 10 символов в поле ИНН и нажмите кнопку "Получить" -  2 контрольных разряда будут отображены в соседнем поле.
А вот и сам алгоритм проверки:

Проверка 10 значного ИНН (1 контрольная цифра в конце)

Для примера возьмем 10 значный ИНН 1234567890

Последнее, 10-тое число (0) является контрольным. Если результаты расчета совпадут с контрольной цифрой - значит такой ИНН корректен.

1) Для расчета контрольного числа следует умножить каждый разряд ИНН (кроме последнего контрольного разряда) на следующие цифры:

  • 1 разряд умножить на 2;       для нашего примера 1*2 = 2;
  • 2 разряд умножить на 4;       для нашего примера 2*4 = 8;
  • 3 разряд умножить на 10;     для нашего примера 3*10 = 30;
  • 4 разряд умножить на 3;       для нашего примера 4*3 = 12;
  • 5 разряд умножить на 5;       для нашего примера 5*5 = 25;
  • 6 разряд умножить на 9;       для нашего примера 6*9 = 54;
  • 7 разряд умножить на 4;       для нашего примера 7*4 = 28;
  • 8 разряд умножить на 6;       для нашего примера 8*6 = 48;
  • 9 разряд умножить на 8;       для нашего примера 9*8 = 72;
  • 10 разряд контрольный, его ни на что умножать не надо.

2) Просуммируем получившиеся числа. Для нашего примера получиться: 2+8+30+12+25+54+28+48+72=279

3) Следующий шаг: получаем остаток от деления на число 11. Для нашего примера это 279/11 остаток 4

3а) Если остаток от деления равен 10, то считать что остаток от деления равен 0.

4) Если полученный остаток равен последней цифре, то ИНН корректен. В нашем примере: полученный остаток 4 не равен последней цифре 0, значит такого ИНН быть не может, просим проверить правильность ввода.



Проверка 12 значного ИНН (2 контрольные цифры)

Для проверки 12 значного ИНН, требуется вычислить 2 контрольных числа. Алгоритм расчета такой же, как у 10 значного ИНН. Различаются лишь веса разрядов.

Для примера возьмем 12 значный ИНН 123456789012

Последние, 11-тое и 12-тое числа ( 1 и 2 ) являются контрольными. Если результаты расчета совпадут с контрольными цифрами - значит такой ИНН корректен.

1-1) Для расчета первого контрольного числа (11-тое по счету 1) умножаем разряды ИНН на следующие цифры

  • 1 разряд умножить на 7;       для нашего примера 1*7 = 7;
  • 2 разряд умножить на 2;       для нашего примера 2*2 = 4;
  • 3 разряд умножить на 4;       для нашего примера 3*4 = 12;
  • 4 разряд умножить на 10;     для нашего примера 4*10 = 40;
  • 5 разряд умножить на 3;       для нашего примера 5*3 = 15;
  • 6 разряд умножить на 5;       для нашего примера 6*5 = 30;
  • 7 разряд умножить на 9;       для нашего примера 7*9 = 63;
  • 8 разряд умножить на 4;       для нашего примера 8*4 = 32;
  • 9 разряд умножить на 6;       для нашего примера 9*6 = 54;
  • 10 разряд умножить на 8;     для нашего примера 0*8 = 0;
  • 11 разряд контрольный, его ни на что умножать не надо.
  • 12 разряд контрольный, его ни на что умножать не надо.

1-2) Просуммируем получившиеся числа. Для нашего примера получиться: 7+4+12+40+15+30+63+32+54+0=257

1-3) Следующий шаг: получаем остаток от деления на число 11. Для нашего примера это 257/11 остаток 4

1-3а) Если остаток от деления равен 10, то считать что остаток от деления равен 0.

1-4) Если полученный остаток равен 11-той цифре, то проверяем следующую контрольную цифру. В нашем примере: полученный остаток 4 не равен 11-той цифре 1, значит такого ИНН быть не может, просим проверить правильность ввода. Но для примера проверим и следующее контрольное число.

2-1) Для расчета второго контрольного числа (12-тое по счету 2) умножаем разряды ИНН на следующие цифры

  • 1 разряд умножить на 3;       для нашего примера 1*3 = 3;
  • 2 разряд умножить на 7;       для нашего примера 2*7 = 14;
  • 3 разряд умножить на 2;       для нашего примера 3*2 = 6;
  • 4 разряд умножить на 4;       для нашего примера 4*4 = 16;
  • 5 разряд умножить на 10;     для нашего примера 5*10 = 50;
  • 6 разряд умножить на 3;       для нашего примера 6*3 = 18;
  • 7 разряд умножить на 5;       для нашего примера 7*5 = 35;
  • 8 разряд умножить на 9;       для нашего примера 8*9 = 72;
  • 9 разряд умножить на 4;       для нашего примера 9*4 = 36;
  • 10 разряд умножить на 6;     для нашего примера 0*6 = 0;
  • 11 разряд умножить на 8;     для нашего примера 1*8 = 8;
    (хоть это и контрольный разряд, но он учитывается для получения второго контрольного числа)
  • 12 разряд контрольный, его ни на что умножать не надо.

2-2) Просуммируем получившиеся числа. Для нашего примера получиться: 3+14+6+16+50+18+35+72+36+0+8=258

2-3) Следующий шаг: получаем остаток от деления на число 11. Для нашего примера это 258/11 остаток 5

2-3а) Если остаток от деления равен 10, то считать что остаток от деления равен 0.

2-4) Если полученный остаток равен 12-той цифре, и на предыдущем этапе было равенство контрольного числа то ИНН корректен. В нашем примере: полученный остаток 5 не равен 12-той цифре 2, значит такого ИНН быть не может, просим проверить правильность ввода.


Скачать файлы

Наименование Файл Версия Размер
КонтрольнаяЦифраИНН.epf 176
.epf 6,57Kb
24.05.10
176
.epf 6,57Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Андрей (AKV77) 24.05.10 14:53
Протестировал. Формирует верно. Спасибо, не сколько за обработку, сколько за полученную информацию принципе формирования ИНН.
Knych; gutentag; Alraune; +3 Ответить
3. Алексей Константинов (alexk-is) 25.05.10 00:54
В типовых конфигурациях есть такая функция в общих модулях ИННСоответствуетТребованиям

// Проверяет соответствие ИНН требованиям
// Параметры:
// ИНН - строка - проверяемый индивидуальный номер налогоплательщика,
// ВладелецИНН - ПеречислениеСсылка.ЮрФизЛицо - тип владельца ИНН: физлицо или юрлицо
Функция ИННСоответствуетТребованиям(Знач ИНН, Знач ТипЛица) Экспорт
SlavaVNL; neTPyLLIka; tango; +3 Ответить 2
4. Андрей Янакаев (YAN) 26.05.10 00:11
Уж на порядок интереснее загружать сведения с сайта налоговой по ИНН, а не проверять (к физлицам это не относится).
5. Михаил Ражиков (tango) 26.05.10 21:03
(2) и (3), но не как повод для минуса, а как вопрос плюсовавшим :)
6. Алексей Константинов (alexk-is) 27.05.10 07:15
(5) Это от незнания возможностей типовых конфигураций и их функционала. Если распотрошить УПП на части, то публикациями можно просто завалиться.

С другой стороны вся партнерская сеть 1С держится на лени бухгалтеров и на незнании "технического" персонала. Собственно как и любая другая обслуживающая структура, например, автосервисы. Я не лезу в движок потому, что не знаю, что там нужно открутить, а читать умные книжки мне лень.

С другой стороны любая попытка сделать этот мир чуточку лучше, заслуживает всяческой поддержки.
7. Аркадий Кучер (Abadonna) 27.05.10 07:41
Ну не знаю... Алгоритм известный, еще и в 7.7 применял как минимум года с 2006-го.
Но ведь стопудов кому-то, например, лень набрать в поиске "Алгоритм проверки ИНН"
Вот, например, на вики хренова туча всяких алгоритмов проверки, и не только для ИНН
http://ru.wikipedia.org/wiki/Контрольное_число
Ха! Прикинул: это ж сколько разработок можно наваять, используя ссылку! :D
8. Vasily Kushnir (vasilykushnir) 27.05.10 08:20
(7) так и до теоремы Пифагора докатимся. Слава Богу, хоть с перенумераторами как-то притихли - чуть ли не каждый день выдавали "на гора".
9. Михаил Ражиков (tango) 27.05.10 10:37
(6) с авто неудачный пример.
жигуль так сделан, что можно разобрать, собрать и оно поедет (я в одиночку двигатель снимал).
а любая иномарка - просто неромонтопригодна на уровне винтика, только целиком блок - сняли/заменили
т.е., сравнивая с 1с, это как если б модули в типовых поставлялись откомпилированными
10. Алексей Константинов (alexk-is) 27.05.10 11:41
(9) С авто очень удачный пример. Есть те кому не лень, с руками и головой, которые могут. А есть все остальные, которые едут в сервис.
11. Аркадий Кучер (Abadonna) 27.05.10 11:48
(10) Не всегда с авто верный. В середине 90-х К=УровеньМоейЗП/УровеньЦен был очень приличный, так что я масло в движке ездил в сервис менять, просто руки пачкать не хотелось и в яму в гараже лезть. Хотя я - инженер-механик, и мне это масло поменять, что два байта отослать
P.S. А вот советские времена даже развал-схождение сам делал, потому как в сервис на стенд хрен было попасть
12. Алексей Константинов (alexk-is) 27.05.10 12:30
(11) Это еще один эпизод подтверждающий, что пример приведен очень удачно. Факторов влияющих на использование или не использование услуг сторонних организаций очень много. Нет желания и есть деньги - в автосервис, нет желания и нет деньг - в гаражи к частникам или студента позвать (у него мопед, с жигулями тоже как-нибудь разберется). А если у тебя 200 жигулей, то лучше завести своего автомеханика, чтобы хотя бы масло менял. Ну, и т.д.
13. Олег Шалимов (CaSH_2004) 10.06.13 00:04
(0) Мне вот непонятно почему отличаются эти 2 алгоритма авторский и http://help1c.com/faq/view/428.html в части проверки ИНН для ИП, насколько я понял атор поменял на вариант когда неизвестны 2 цифры последние? вроде работает одинаково, но тогда получается что авторский вариант лучше
15. Слава (SlavaVNL) 22.12.14 05:20
(3) alexk-is, все верно.
РегламентированнаяОтчетность.ИННСоответствуетТребованиямБезТипа("ИНН") если быть точнее :). В функции ИННСоответствуетТребованиям второй параметр нужен. Там же есть функции про КПП, ОГРН и прочие.
16. Слава (SlavaVNL) 22.12.14 05:28
(6) alexk-is, А я не против что УПП на публикации разберут. По крайней мере не встречал мануала по общим модулям и их возможностям, хотя бы самым используемым. Каждый сам своим опытом сидит с ними и разбирается по мере необходимости. Причем если про управляемые формы говорить, то там без бутылки и отладчика делать нечего. Мне, например, жалко времени сидеть и изучать их по порядку. Вот и изобретают люди велосипеды.