Проверочка ИНН

  • Автор темы LIGHT
  • Дата начала
L

LIGHT

#1
Всем привет!

Встала бухгалтерская задача проверять ИНН при сохранении карточки на контрольную сумму (физ.лиц/юр.лица)

Может у кого есть функция обсчета? Был бы очень спасибо!
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#2
нашел в нете... думаю перегнать в скрипт не составит труда

Модуль содержит две функции для проверки контрольного числа ИНН и страхового номера ПФ

CheckINN
- Функция вычисляет контрольное число ИНН и возвращает True если ИНН введен правильно или False в противном случае
В качестве параметра передается проверяемый ИНН
Для справки: структура ИНН

* 10-ти разрядный ИНН - NNNNXXXXXC
* 12-ти разрядный ИНН - NNNNXXXXXXCC где:
o NNNN - номер налоговой инспекции
o XXXXX, XXXXXX - порядковый номер налогоплательщика (номер записи в госреестре)
o C - контрольное число в 10-ти разрядном ИНН
o CC - контрольное число в 12-ти разрядном ИНН (фактически, идущие подряд две контрольные цифры)

CheckPFCertificate
- Функция вычисляет контрольное число страхового номера ПФ и возвращает True если оно введено правильно или False в противном случае
В качестве параметра передается страховой номер ПФ без разделителей
Проверка контрольного числа Страхового номера проводится только для номеров больше номера 001-001-998.
Контрольное число Страхового номера рассчитывается следующим образом: каждая цифра Страхового номера умножается на номер своей позиции (позиции отсчитываются с конца), полученные произведения суммируются, сумма делится на 101, последние две цифры остатка от деления являются Контрольным числом.

А еще посмотри тут

Посмотреть вложение inn_pf.zip
 

Вложения

L

LIGHT

#3
Может кому пригодиться :(

[codebox]Function CheckINN(sInn As String) As Boolean

' Функция проверки количества символов, и вывод соответствующей подфункции:

sInn = Trim$(sInn)

Select Case Len(sInn)

Case 10: Check= CheckINN10(sInn)
Case 12: Check= CheckINN12(sInn)

End Select

If Check = False Then Msgbox("Не корректный ИНН")

End Function


Function CheckINN10(sInn As String) As Boolean

' Функция проверки 10-тизначного ИНН

Dim i As Integer, s As String, j As Integer
Dim v(1 To 10) As Integer

v(1) = 2
v(2) = 4
v(3) = 10
v(4) = 3
v(5) = 5
v(6) = 9
v(7) = 4
v(8) = 6
v(9) = 8
v(10) = 0

For i = 1 To 10

s = Mid$(sInn, i, 1)

If Not Isnumeric(s) Then Exit Function

j = j + Cint(v(i)) * Cint(s)

Next i

j = j Mod 11

If j > 9 Then j = j Mod 10

CheckINN10 = (j = Cint(s))

End Function


Function CheckINN12(sInn As String) As Boolean

' Функция проверки 12-тизначного ИНН

Dim i As Integer, s As String, j As Integer
Dim v(1 To 12) As Integer

v(1) = 3
v(2) = 7
v(3) = 2
v(4) = 4
v(5) = 10
v(6) = 3
v(7) = 5
v(8) = 9
v(9) = 4
v(10) = 6
v(11) = 8
v(12) = 0

'j = 0

For i = 1 To 12

s = Mid$(sInn, i, 1)

If Not Isnumeric(s) Then Exit Function

j = j + Cint(v(i)) * Cint(s)

Next i

j = j Mod 11

If j > 9 Then j = j Mod 10

If j <> Cint(s) Then Exit Function

j = 0

For i = 1 To 11

j = j + Cint(v(i)) * Cint(Mid$(sInn, i, 1))

Next i

j = j Mod 11

If j > 9 Then j = j Mod 10

CheckINN12 = (j = Cint(s))

End Function[/codebox]

И далее вешаем куда нужно:

Код:
CheckINN(doc.GetItemValue("INN")(0))
Проверил парочку номеров - работает