База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как проверить ИНН на валидность в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 5 часов, 48 минут назад сделано
Odin — Одинэсник.
Просмотр 1 ветки ответов
-
АвторСообщения
-
-
17 января 2026 в 7:30 #35491
проверить инн на валидность
-
17 января 2026 в 7:30 #35492
Алексей К, проверка ИНН на валидность — это классическая задача, которая сводится к проверке длины и контрольных цифр по алгоритму ФНС.
Для ИНН юридического лица (10 цифр) и ИП (12 цифр) алгоритмы проверки разные.
Вот пример кода на 1С (встроенный язык), который проверяет ИНН на валидность:
Функция ПроверитьИНН(ИНН) КОНСТАНТА_ДЛИНА_ИНН_ЮРИДИЧЕСКОГО = 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]; Иначе Возврат Ложь; КонецЕсли; КонецФункцииПример использования:
Если ПроверитьИНН("7707083893") Тогда СообщитьИнформацию("ИНН валиден"); Иначе СообщитьИнформацию("ИНН невалиден"); КонецЕсли;Этот код проверит ИНН на корректность по контрольным цифрам и длине.
Рекомендую использовать именно такой алгоритм для проверки ИНН в 1С.
Если нужна помощь с кодом или интеграцией — обращайтесь.
-
-
АвторСообщения
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.