gifts2017

Проверка ИНН Сотрудников России

Опубликовал ArCtic (ArCtic) в раздел Программирование - Универсальные функции

Проверка ИНН Сотрудников
	 Функция ОстатокОтДеления(Делимое, Делитель);
  
    Возврат Делимое - Делитель * Цел(Делимое / Делитель);
  
КонецФункции

Процедура ПроверкаИНН(ВходИНН)
  
    Перем МассИНН[12];
    Перем ДляРасчета[11];
    Перем Сумма_;
    Перем Остаток;
    Перем Флаг;
    Флаг = 0;
  
    Для Сч = 1 По 12 Цикл
        МассИНН[Сч] = 0;
        Если Сч < 12 Тогда
            ДляРасчета[Сч] = 0;
        КонецЕсли;
        МассИНН[Сч] = Число(Сред(ВходИНН, Сч, 1));
    КонецЦикла;
    ДляРасчета[1]    = МассИНН[1]    * 7;
    ДляРасчета[2]    = МассИНН[2]    * 2;
    ДляРасчета[3]    = МассИНН[3]    * 4;
    ДляРасчета[4]    = МассИНН[4]    * 10;
    ДляРасчета[5]    = МассИНН[5]    * 3;
    ДляРасчета[6]    = МассИНН[6]    * 5;
    ДляРасчета[7]    = МассИНН[7]    * 9;
    ДляРасчета[8]    = МассИНН[8]    * 4;
    ДляРасчета[9]    = МассИНН[9]    * 6;
    ДляРасчета[10]    = МассИНН[10]    * 8;
    Сумма_ = 0;
    Для Сч = 1 По 10 Цикл
        Сумма_ = Сумма_ + ДляРасчета[Сч];
    КонецЦикла;
    Остаток = ОстатокОтДеления(Сумма_, 11);
    Если Остаток = 10 Тогда
        Остаток = 0;
    КонецЕсли;
    Если Остаток = МассИНН[11] Тогда
        Флаг = 1;
    Иначе
        Сообщить("ИНН не верен! Исправьте! (первая контрольная цифра не верна)");
        Возврат ;
    КонецЕсли;
    Если Флаг = 1 Тогда
        ДляРасчета[1]    = МассИНН[1]    * 3;
        ДляРасчета[2]    = МассИНН[2]    * 7;
        ДляРасчета[3]    = МассИНН[3]    * 2;
        ДляРасчета[4]    = МассИНН[4]    * 4;
        ДляРасчета[5]    = МассИНН[5]    * 10;
        ДляРасчета[6]    = МассИНН[6]    * 3;
        ДляРасчета[7]    = МассИНН[7]    * 5;
        ДляРасчета[8]    = МассИНН[8]    * 9;
        ДляРасчета[9]    = МассИНН[9]    * 4;
        ДляРасчета[10]    = МассИНН[10]    * 6;
        ДляРасчета[11]    = МассИНН[11]    * 8;
        Сумма_ = 0;
        Для Сч = 1 По 11 Цикл
            Сумма_ = Сумма_ + ДляРасчета[Сч];
        КонецЦикла;
        Остаток = ОстатокОтДеления(Сумма_, 11);
        Если Остаток = 10 Тогда
            Остаток = 0;
        КонецЕсли;
        Если Остаток = МассИНН[12] Тогда
            Предупреждение("ИНН верен!");
        Иначе
            Сообщить("ИНН не верен! Исправьте! (вторая контрольная цифра не верна)");
        КонецЕсли;
    КонецЕсли;
  
КонецПроцедуры

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Станислав Патырило (wondermaker) 24.02.10 10:34
Это Украина или Россия :) ?
2. andrew_flyer (Andrew_flyer) 24.02.10 17:12
3. ArCtic (ArCtic) 24.02.10 17:20
4. v_id (v_id) 19.04.10 22:02
Функция ОстатокОтДеления(Делимое, Делитель);

Возврат Делимое - Делитель * Цел(Делимое / Делитель);

КонецФункции


Можно (нужно?) проще. Для примера набери в табло 101%10 - сам поймешь. В типовых часто используется.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа