Главбух - форум бухгалтеров, бухгалтерский форум про налоговый учет ОСНО, УСНО, ЕНВД, форум 1С. |
![]() |
#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),Истина,Ложь); КонецЕсли; Если Результат = ложь Тогда ТекстСообщения = """ИНН"" не совпадают контрольные числа!"; КонецЕсли; Если ЗначениеЗаполнено(ТекстСообщения) Тогда ОбщегоНазначения.СообщитьОбОшибке("Длина ""ИНН"" не соответствует требованиям: " + ТекстСообщения); КонецЕсли; |
![]() |
![]() |
![]() |
|
|