Главбух - форум бухгалтеров, бухгалтерский форум про налоговый учет ОСНО, УСНО, ЕНВД, форум 1С.


Вернуться   Главбух форум бухгалтеров, бухгалтерский форум Главбух по налогам, учету, 1С. > Автоматизация > Программы: 1C 8.0, 8.1, 8.2, 8.3


Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.05.2010, 08:40   #1
статус: бухгалтер
 
Регистрация: 20.03.2010
Сообщений: 88
Спасибо: 0
По умолчанию Проверка ИНН

Сделано на примере УТ. В модуле формы "ФормаЭлемента" справочника Контрагенты есть функция ПроверитьИНН().
Предлагаю заменить ее на следующую. В данном случае будет проверяться контрольное число.


Если НЕ ЗначениеЗаполнено(ИНН) Тогда
Возврат;
КонецЕсли;

ДлинаИНН = СтрДлина(ИНН);
ТекстСообщения = "";

Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда
Если НЕ ДлинаИНН = 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),Истина,Ложь);
КонецЕсли;

Если Результат = ложь Тогда
ТекстСообщения = """ИНН"" не совпадают контрольные числа!";
КонецЕсли;
Если ЗначениеЗаполнено(ТекстСообщения) Тогда
ОбщегоНазначения.СообщитьОбОшибке("Длина ""ИНН"" не соответствует требованиям: " + ТекстСообщения);
КонецЕсли;

ArPlus вне форума   Ответить с цитированием
Ответ



« Предыдущая тема | Следующая тема »

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Полезности: Что лучше: ООО или ИП? калькулятор НДС Книги по бухгалтерскому учету Иностранец в России: на что стоит обратить внимание при трудоустройстве
Какие понятия и определения используются в спорах о взыскании неосновательного обогащения в коттеджных поселках

Текущее время: 04:14. Часовой пояс GMT +3.


Реклама на форуме Главбух.ру

Правила форума


Goon Каталог сайтов
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot