База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как проверить ИНН на валидность в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 месяц, 1 неделя назад сделано
Odin — Одинэсник.
Просмотр 1 ветки ответов
-
АвторСообщения
-
-
17 января 2026 в 7:30 #35491
проверить инн на валидность
-
17 января 2026 в 7:30 #35492
Алексей К, проверка ИНН на валидность — это классическая задача, которая сводится к проверке длины и контрольных цифр по алгоритму ФНС.
Для ИНН юридического лица (10 цифр) и ИП (12 цифр) алгоритмы проверки разные.
Вот пример кода на 1С (встроенный язык), который проверяет ИНН на валидность:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102Функция ПроверитьИНН(ИНН)КОНСТАНТА_ДЛИНА_ИНН_ЮРИДИЧЕСКОГО = 10;КОНСТАНТА_ДЛИНА_ИНН_ИП = 12;// Убираем все нецифровые символыИНН = СтрЗаменить(ИНН, " ", "");ИНН = СтрЗаменить(ИНН, "-", "");ИНН = СтрЗаменить(ИНН, ".", "");ИНН = СтрЗаменить(ИНН, ",", "");Если НЕ РегулярныеВыражения.Соответствует(ИНН, "^d{10}$") И НЕ РегулярныеВыражения.Соответствует(ИНН, "^d{12}$") ТогдаВозврат Ложь; // Длина не 10 и не 12КонецЕсли;МассивЦифр = Новый Массив;Для Индекс = 1 По СтрДлина(ИНН) ЦиклМассивЦифр.Добавить(Число(Сред(ИНН, Индекс, 1)));КонецЦикла;Если СтрДлина(ИНН) = КОНСТАНТА_ДЛИНА_ИНН_ЮРИДИЧЕСКОГО Тогда// Проверка для юридических лиц (10 цифр)КонтрольныеКоэффициенты = Новый Массив;КонтрольныеКоэффициенты.Добавить(2);КонтрольныеКоэффициенты.Добавить(4);КонтрольныеКоэффициенты.Добавить(10);КонтрольныеКоэффициенты.Добавить(3);КонтрольныеКоэффициенты.Добавить(5);КонтрольныеКоэффициенты.Добавить(9);КонтрольныеКоэффициенты.Добавить(6);КонтрольныеКоэффициенты.Добавить(8);Сумма = 0;Для Индекс = 0 По 8 ЦиклСумма = Сумма + МассивЦифр[Индекс] * КонтрольныеКоэффициенты[Индекс];КонецЦикла;Остаток = Сумма % 11;Если Остаток > 9 ТогдаОстаток = Остаток % 10;КонецЕсли;Возврат Остаток = МассивЦифр[9];ИначеЕсли СтрДлина(ИНН) = КОНСТАНТА_ДЛИНА_ИНН_ИП Тогда// Проверка для ИП (12 цифр)Коэффициенты1 = Новый Массив;Коэффициенты1.Добавить(7);Коэффициенты1.Добавить(2);Коэффициенты1.Добавить(4);Коэффициенты1.Добавить(10);Коэффициенты1.Добавить(3);Коэффициенты1.Добавить(5);Коэффициенты1.Добавить(9);Коэффициенты1.Добавить(4);Коэффициенты1.Добавить(6);Коэффициенты1.Добавить(8);Коэффициенты1.Добавить(0);Коэффициенты2 = Новый Массив;Коэффициенты2.Добавить(3);Коэффициенты2.Добавить(7);Коэффициенты2.Добавить(2);Коэффициенты2.Добавить(4);Коэффициенты2.Добавить(10);Коэффициенты2.Добавить(3);Коэффициенты2.Добавить(5);Коэффициенты2.Добавить(9);Коэффициенты2.Добавить(4);Коэффициенты2.Добавить(6);Коэффициенты2.Добавить(8);Коэффициенты2.Добавить(0);// Проверка первой контрольной цифры (11-я цифра)Сумма1 = 0;Для Индекс = 0 По 10 ЦиклСумма1 = Сумма1 + МассивЦифр[Индекс] * Коэффициенты1[Индекс];КонецЦикла;Остаток1 = Сумма1 % 11;Если Остаток1 > 9 ТогдаОстаток1 = Остаток1 % 10;КонецЕсли;Если Остаток1 <> МассивЦифр[10] ТогдаВозврат Ложь;КонецЕсли;// Проверка второй контрольной цифры (12-я цифра)Сумма2 = 0;Для Индекс = 0 По 11 ЦиклСумма2 = Сумма2 + МассивЦифр[Индекс] * Коэффициенты2[Индекс];КонецЦикла;Остаток2 = Сумма2 % 11;Если Остаток2 > 9 ТогдаОстаток2 = Остаток2 % 10;КонецЕсли;Возврат Остаток2 = МассивЦифр[11];ИначеВозврат Ложь;КонецЕсли;КонецФункцииПример использования:
1С (Код)12345Если ПроверитьИНН("7707083893") ТогдаСообщитьИнформацию("ИНН валиден");ИначеСообщитьИнформацию("ИНН невалиден");КонецЕсли;Этот код проверит ИНН на корректность по контрольным цифрам и длине.
Рекомендую использовать именно такой алгоритм для проверки ИНН в 1С.
Если нужна помощь с кодом или интеграцией — обращайтесь.
-
-
АвторСообщения
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.