ПроверитьСНИЛС (1С 8.3, 8.2)
Функция проверяет на корректность страховой номер индивидуального лицевого счета (СНИЛС) в формате "ХХХ-ХХХ-ХХХ ХХ".
Функция ПроверитьСНИЛС(Знач Значение) Экспорт СНИЛС = СокрЛП(Значение); /// ААА-БББ-ВВВ ГГ Если СтрДлина(СНИЛС) <> 14 Тогда Возврат Ложь; КонецЕсли; ГГ = СокрЛП(Прав(СНИЛС, 2)); Если СтрДлина(ГГ) <> 2 Тогда Возврат Ложь; КонецЕсли; Если Не ПопыткаПеревестиВЧисло(ГГ) Тогда Возврат Ложь; КонецЕсли; КонтрольноеЧисло = Число(ГГ); АБВ = Лев(СНИЛС, 11); Части = РазложитьСтрокуВМассивПодстрок(АБВ, "-"); Если Части.Количество() <> 3 Тогда Возврат Ложь; КонецЕсли; Код = ""; Для Каждого Часть Из Части Цикл Часть = СокрЛП(Часть); Если СтрДлина(Часть) <> 3 Тогда Возврат Ложь; КонецЕсли; Если Не ПопыткаПеревестиВЧисло(Часть) Тогда Возврат Ложь; КонецЕсли; Код = Код + Часть; КонецЦикла; КонтрольнаяСумма = 0; Для А = 1 По 9 Цикл Число = Число(Сред(Код, А, 1)); КонтрольнаяСумма = КонтрольнаяСумма + Число * (10 - А); КонецЦикла; КонтрольнаяСумма = КонтрольнаяСумма % 101; Если КонтрольнаяСумма < 100 Тогда Возврат КонтрольнаяСумма = КонтрольноеЧисло; ИначеЕсли КонтрольнаяСумма = 100 Или КонтрольнаяСумма = 101 Тогда Возврат 0 = КонтрольноеЧисло; КонецЕсли; Возврат Истина; КонецФункции |