ПроверитьИНН (1С 8.3, 1С 8.2)
Функция проверяет переданную ей строку с ИНН (10 цифр для юридического и 12 цифр для физического лица) на предмет корректности согласно алгоритму расчета контрольного числа. Возвращает Истина, если всё Ок, иначе Ложь.
Функция ПроверитьИНН(Знач Значение) Экспорт ИНН = СокрЛП(Значение); Если Не ПопыткаПеревестиВЧисло(ИНН) Тогда Возврат Ложь; КонецЕсли; Если СтрДлина(ИНН) = 10 Тогда Коэффициенты = Новый Массив(10); Коэффициенты[0] = 2; Коэффициенты[1] = 4; Коэффициенты[2] = 10; Коэффициенты[3] = 3; Коэффициенты[4] = 5; Коэффициенты[5] = 9; Коэффициенты[6] = 4; Коэффициенты[7] = 6; Коэффициенты[8] = 8; Коэффициенты[9] = 0; КонтрольнаяСумма = 0; Для А = 1 По 10 Цикл Число = Число(Сред(ИНН, А, 1)); КонтрольнаяСумма = КонтрольнаяСумма + Число * Коэффициенты[А - 1]; КонецЦикла; КонтрольноеЧисло = КонтрольнаяСумма % 11; Если КонтрольноеЧисло > 9 Тогда КонтрольноеЧисло = КонтрольноеЧисло % 10; КонецЕсли; Возврат КонтрольноеЧисло = Число(Сред(ИНН, 10, 1)); ИначеЕсли СтрДлина(ИНН) = 12 Тогда Коэффициенты = Новый Массив(12); Коэффициенты[0] = 3; Коэффициенты[1] = 7; Коэффициенты[2] = 2; Коэффициенты[3] = 4; Коэффициенты[4] = 10; Коэффициенты[5] = 3; Коэффициенты[6] = 5; Коэффициенты[7] = 9; Коэффициенты[8] = 4; Коэффициенты[9] = 6; Коэффициенты[10] = 8; Коэффициенты[11] = 0; КонтрольнаяСумма11 = 0; Для А = 1 По 11 Цикл Число = Число(Сред(ИНН, А, 1)); КонтрольнаяСумма11 = КонтрольнаяСумма11 + Число * Коэффициенты[А]; КонецЦикла; КонтрольноеЧисло11 = КонтрольнаяСумма11 % 11; Если КонтрольноеЧисло11 > 9 Тогда КонтрольноеЧисло11 = КонтрольноеЧисло11 % 10; КонецЕсли; Если КонтрольноеЧисло11 <> Число(Сред(ИНН, 11, 1)) Тогда Возврат Ложь; КонецЕсли; КонтрольнаяСумма12 = 0; Для А = 1 По 12 Цикл Число = Число(Сред(ИНН, А, 1)); КонтрольнаяСумма12 = КонтрольнаяСумма12 + Число * Коэффициенты[А - 1]; КонецЦикла; КонтрольноеЧисло12 = КонтрольнаяСумма12 % 11; Если КонтрольноеЧисло12 > 9 Тогда КонтрольноеЧисло12 = КонтрольноеЧисло12 % 10; КонецЕсли; Если КонтрольноеЧисло12 <> Число(Сред(ИНН, 12, 1)) Тогда Возврат Ложь; КонецЕсли; Возврат Истина; Иначе Возврат Ложь; КонецЕсли; КонецФункции |