Проверить СНИЛС в 1С 8.3, 8.2
Функция осуществляет проверку корректности страхового номера СНИЛС (индивидуального лицевого счёта) в формате «ХХХ-ХХХ-ХХХ ХХ».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
Функция ПроверкаСНИЛС(Знач ПроверяемоеЗначение) Экспорт СНИЛС = СокрЛП(ПроверяемоеЗначение); /// AAA-BBB-CCC DD Если СтрДлина(СНИЛС) <> 14 Тогда Возврат Ложь; КонецЕсли; DD = СокрЛП(Прав(СНИЛС, 2)); Если СтрДлина(DD) <> 2 Тогда Возврат Ложь; КонецЕсли; Если Не ПопыткаПеревестиВЧисло(DD) Тогда Возврат Ложь; КонецЕсли; КонтрольнЧисло = Число(DD); ABC = Лев(СНИЛС, 11); ЧастиСтр = РазложитьСтрокуВМассивПодстрок(ABC, "-"); Если ЧастиСтр.Количество() <> 3 Тогда Возврат Ложь; КонецЕсли; Код = ""; Для Каждого ЧастьСтр Из ЧастиСтр Цикл ЧастьСтр = СокрЛП(ЧастьСтр); Если СтрДлина(ЧастьСтр) <> 3 Тогда Возврат Ложь; КонецЕсли; Если Не ПопыткаПеревестиВЧисло(ЧастьСтр) Тогда Возврат Ложь; КонецЕсли; Код = Код + ЧастьСтр; КонецЦикла; КонтрольнСумма = 0; Для А = 1 По 9 Цикл Число = Число(Сред(Код, А, 1)); КонтрольнСумма = КонтрольнСумма + Число * (10 - А); КонецЦикла; КонтрольнСумма = КонтрольнСумма % 101; Если КонтрольнСумма < 100 Тогда Возврат КонтрольнСумма = КонтрольнЧисло; ИначеЕсли КонтрольнСумма = 100 Или КонтрольнСумма = 101 Тогда Возврат 0 = КонтрольнЧисло; КонецЕсли; Возврат Истина; КонецФункции |