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

Тема в разделе "Lotus - Программирование", создана пользователем LIGHT, 10 фев 2009.

  1. LIGHT

    LIGHT Гость

    Всем привет!

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

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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    нашел в нете... думаю перегнать в скрипт не составит труда

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

    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
     
  3. LIGHT

    LIGHT Гость

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

    [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]

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

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
Загрузка...

Поделиться этой страницей