Показано с 1 по 5 из 5
Тема: Проверка ИНН
-
09.05.2010, 09:43 #1
- Регистрация
- 20.04.2009
- Сообщений
- 105
- Сказал(а) спасибо
- 21
- Поблагодарили 18 раз(а) в 9 сообщениях
Проверка ИНН
Сделано на примере УТ. В модуле формы "ФормаЭлемента" справочника Контрагенты есть функция ПроверитьИНН().
Предлагаю заменить ее на следующую. В данном случае будет проверяться контрольное число.
Если НЕ ЗначениеЗаполнено(ИНН) Тогда
Возврат;
КонецЕсли;
ДлинаИНН = СтрДлина(ИНН);
ТекстСообщения = "";
Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.Физ Лицо Тогда
Если НЕ ДлинаИНН = 12 Тогда
ТекстСообщения = """ИНН"" физического лица 12 символов!";
КонецЕсли;
Иначе
Если НЕ ДлинаИНН = 10 Тогда
ТекстСообщения = """ИНН"" юридического лица 10 символов!";
КонецЕсли;
КонецЕсли;
Множители = Новый Массив(11);
Множители[0] = 3;
Множители[1] = 7;
Множители[2] = 2;
Множители[3] = 4;
Множители[4] = 10;
Множители[5] = 3;
Множители[6] = 5;
Множители[7] = 9;
Множители[8] = 4;
Множители[9] = 6;
Множители[10] = 8;
Результат=Ложь;
Если ДлинаИНН = 10 Тогда
Сум = 0;
Для i=0 По 8 Цикл
Сум = Сум + Сред(ИНН,i+1,1) * Множители[i+2];
КонецЦикла;
Сум = Сум - 11 * Цел(Сум/11);
Сум = Сум - 10 * Цел(Сум/10);
Результат = ?(Число(Сред(ИНН,10,1)) = Сум,Истина,Ложь);
ИначеЕсли ДлинаИНН = 12 Тогда
Сум = 0;
Для i=0 По 9 Цикл
Сум = Сум + Сред(ИНН,i+1,1) * Множители[i+1];
КонецЦикла;
Сум = Сум - 11 * Цел(Сум/11);
Сум = Сум - 10 * Цел(Сум/10);
Сум2 = 0;
Для i=0 По 10 Цикл
Сум2 = Сум2 + Сред(ИНН,i+1,1) * Множители[i];
КонецЦикла;
Сум2 = Сум2 - 11 * Цел(Сум2/11);
Сум2 = Сум2 - 10 * Цел(Сум2/10);
Результат = ?((Число(Сред(ИНН,11,1)) = Сум)И(Число(Сред(ИНН,12,1)) = Сум2),Истина,Ложь);
КонецЕсли;
Если Результат = ложь Тогда
ТекстСообщения = """ИНН"" не совпадают контрольные числа!";
КонецЕсли;
Если ЗначениеЗаполнено(ТекстСо� �бщения) Тогда
ОбщегоНазначения.Сообщить� �бОшибке("Длина ""ИНН"" не соответствует требованиям: " + ТекстСообщения);
КонецЕсли;
-
09.05.2010, 16:19 #2
- Регистрация
- 12.02.2010
- Сообщений
- 5
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
а зачем вообще эта проверка нужна?
у меня клиент ввел инн и очень был шокирован, что программа выдала сообщение, о неправильном инн'e
-
10.05.2010, 11:40 #3
- Регистрация
- 20.04.2009
- Сообщений
- 105
- Сказал(а) спасибо
- 21
- Поблагодарили 18 раз(а) в 9 сообщениях
И что его шокировало? Что Контрагент с которым он намерен работать или работает, мягко говоря, ввел его в заблуждение? ;)
-
10.05.2010, 18:53 #4
- Регистрация
- 12.02.2010
- Сообщений
- 5
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
а в чем же заблуждение? если эта проверка сто процентов может сказать существует ли такой инн или нетИ
-
11.05.2010, 06:33 #5
- Регистрация
- 20.04.2009
- Сообщений
- 105
- Сказал(а) спасибо
- 21
- Поблагодарили 18 раз(а) в 9 сообщениях
О том что НЕ сущесвует точнно на 100%
Похожие темы
-
ЗиК проверка реквизитов
от Леди Юлька в разделе 1С Предприятие 7.7Ответов: 4Последнее сообщение: 09.02.2010, 08:38
Социальные закладки