Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Идентификационный номер налогоплательщика / 25 сообщений из 28, страница 1 из 2
21.08.2004, 20:15
    #32660158
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Доброе время суток!!!

Может кто-нибудь в курсе:
1) как формируестя сабж
2) есть ли у кого-нибудь алгоритм (ну или готовая программка) по проверке сабжа

P.S. все это надо для программки (чтобы при вводе в поле ИНН, он проверялся на достоверность)

P.P.S. если есть какие-либо предложения или советы, пишите :)
...
Рейтинг: 0 / 0
22.08.2004, 03:31
    #32660206
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Не уверен в универсальности данного описания, но у нас на Украине 10-значный ид_код налогоплательщика имеет следующие особенности:
1) первые 5 цифр есть не что иное, как разница между датой рождения человека и началом прошлого века (за исключением некоторых лиц, родившихся в районе 1949 года - там несколько иные правила ввиду избыточного количества новорожденных в тот период - на всех не хватает 10-тицифровых уникальных комбинаций при таком количестве одинаковых первых 5-ти цифр);
2) предпоследняя цифра у женщин всегда четная, а у мужчин - нечетная;
3) остальные цифры связаны с местом рождения (получения кода).
Первую особенность я использую для вычисления неизвестной даты рождения по известному ид_коду:
дата_рожд=dtoc(date(1899,12,31)+val(substr(id_kod,1,5)))
где id_kod - есть ид_код налогоплательщика, записанный в строчном виде.
...
Рейтинг: 0 / 0
23.08.2004, 09:13
    #32660585
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Расчет контрольной суммы ИНН и 20-разрядных банковских счетов

http://www.foxclub.ru/sol/index.php?act=view&id=236
...
Рейтинг: 0 / 0
27.08.2004, 22:06
    #32669680
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
neznajka
1) первые 5 цифр есть не что иное, как разница между датой рождения человека и началом прошлого века (за исключением некоторых лиц, родившихся в районе 1949 года - там несколько иные правила ввиду избыточного количества новорожденных в тот период - на всех не хватает 10-тицифровых уникальных комбинаций при таком количестве одинаковых первых 5-ти цифр);
2) предпоследняя цифра у женщин всегда четная, а у мужчин - нечетная;
3) остальные цифры связаны с местом рождения (получения кода).
Первую особенность я использую для вычисления неизвестной даты рождения по известному ид_коду:
дата_рожд=dtoc(date(1899,12,31)+val(substr(id_kod,1,5)))
где id_kod - есть ид_код налогоплательщика, записанный в строчном виде.


1) СПАСИБО за ответ, очень благодарен.

2) ОЧЕНЬ помогло, еще раз СПАСИБО. Но все-таки хотелось бы (ну просто очень хотелось бы :) ) узнать как расчитывается полный номер.

С увадением, StasK
...
Рейтинг: 0 / 0
27.08.2004, 22:11
    #32669682
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
ВладимирМРасчет контрольной суммы ИНН и 20-разрядных банковских счетов

http://www.foxclub.ru/sol/index.php?act=view&id=236

ВладимирМ, Вам тоже большое спасибо, но суть в том, что на Украине действительно формирование ИНН-а отличается от ИНН-а в России :(

С уважением, StasK
...
Рейтинг: 0 / 0
27.08.2004, 23:26
    #32669709
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
To StasK:
Рад, что Вам пригодилась моя информация. Попытаюсь раздобыть более полное описание, сообщу.
...
Рейтинг: 0 / 0
28.08.2004, 01:06
    #32669738
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Цифры с 6-ой по 8-ую - просто порядковый номер поступления данных о человеке в центральную базу за текущие сутки. Последняя цифра контрольная, но, sorry, алгоритма не знаю. Речь идет, разумеется о ДРФО :-)))
...
Рейтинг: 0 / 0
28.08.2004, 01:08
    #32669743
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
P.S. Надеюсь, ты не собрался коды "генерировать"? :-)))
...
Рейтинг: 0 / 0
30.08.2004, 11:02
    #32670690
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
neznajkaTo StasK:
Рад, что Вам пригодилась моя информация. Попытаюсь раздобыть более полное описание, сообщу.

СПАСИБО !!!
Можно и на мыло

С уважением, StasK
...
Рейтинг: 0 / 0
30.08.2004, 11:06
    #32670700
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Спасибо за ответ!

RedrikP.S. Надеюсь, ты не собрался коды "генерировать"? :-)))

Нет я не собираюсь "генерировать коды", дело в том, что когда клиент сообщает свои данные, нужно проверить их соответствие
...
Рейтинг: 0 / 0
30.08.2004, 11:09
    #32670709
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Клиент устно называет свой код, который нужно проверить? Требуй лучше предъявления справки из налоговой!
...
Рейтинг: 0 / 0
30.08.2004, 23:08
    #32672323
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
To StasK:
Redrik действительно прав – цифры с 6-й по 8-ю являются лишь статистическим порядковым номером и смысловой нагрузки практически не несут, так что описание можно считать исчерпанным.
To Redrik:
Насчет предъявления справки из налоговой – не всегда она имеется у посетителя при себе, да и (если задаться целью) сбацать ее при помощи Фотошопа (в смысле – с «левым» кодом) не составляет больших усилий (по своей службе «государевой» мне иногда приходится разбирать подобные случаи); а вот проверить «на лету» истинность сообщенного кода – зачастую очень необходимо:
1) видели бы вы отвисшую челюсть недобросовестного клиента, когда его тут же уличают в том, что он назвал «женский» код! После этого он задумчиво пристыженный идет-таки за своей налоговой справкой;
2) если зрелая (около 40 лет) дама с невозмутимым нахальным видом сообщает код 18-летней девушки – картина иногда становится еще более комичной, особенно, если учесть, что разоблачение происходит мгновенно и тут же – без каких либо подручных средств и компьютерных проверок – люди, работающие с этой системой уже навскидку могут сказать по первым 5-цифрам кода год рождения собеседника, это не сложно. Если интересно, можете на досуге составить себе таблицу из 2-х полей:
1-е поле дата (начиная с 1 января, допустим 1960 года, все последующие записи – 1 января последующих лет);
2-е поле – количество дней, прошедших с начала века до 1 января указанного в 1-м поле года – это и есть первые 5 цифр кода родившегося в этот день человека (можно вычислить как разницу между этим самым 1 января и 31.12.1899), например: dtoc(date(1960,01,01) - dtoc(date(1899,12,31);
После этого, даже прикидочным взглядом вы сможете оценить разницу в первых 5-ти цифрах кода для людей, родившихся (по крайней мере!) в разных 5-летках.
Опять же, это актуально лишь для того, кто связан с кодами налогоплательщиков по роду своей работы, а для обычных граждан это может представлять лишь любопытную игрушку, не более того.
...
Рейтинг: 0 / 0
31.08.2004, 10:12
    #32672611
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Не-а! Описание не исчерпано!
Предпоследняя цифра - чёт/нечёт - но какая ?
Последняя контрольная - как считать?
.
to neznajka:
Знаю-знаю... Всё знаю... Это я счас в предпринимателях... А до этого - 1996-2002 - начальник отдела компьютеризации налоговой инспекции... :-)))
А комичные ситуации бывают и не такие... Вот, например - дождь, лужи, едет жигуль на хорошей скорости и обляпывает симпатишную молоденькую (незнакомую) барышню. Запоминаем номер, находим его хозяина по ГАИшной базе, находим его в ДРФО... и т.д. Потом, часа в два-три ночи звоним, поздравляем его жену с днем рождения и предупреждаем - ежели ты, падлюка, еще хоть одну барышню (или не барышню) обляпаешь, то жди проблем... :-) Действует ураганно!!!
...
Рейтинг: 0 / 0
31.08.2004, 20:01
    #32674243
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Всем СПАСИБО за Ваши ответы, очень помогло :)
Если будут еще какие-нибудь предложения, жду...

------------------------------
С уважением, StasK
...
Рейтинг: 0 / 0
22.09.2004, 23:41
    #32707660
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Больше нет идей ??? :( Я насчет контрольной цифры ???
Это все еще актуально !!!!!!!!!!!!!!!!!

------------------------------
С уважением, StasK
...
Рейтинг: 0 / 0
25.09.2004, 16:03
    #32711580
Iva
Iva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
para param1
set talk off
if para()=0
Return .t.
endif
private k,conSum,coSum,cSum,aConst,i
do case
case type('m.param1')="C"
m.param1=int(val(m.param1))
case type('m.param1')="N"
*
other
return .t.
endcase
conSum=padl(int(m.param1),10,'0')
dime aConst(1,9)
store 0 to aConst
aConst(1,1)= -1
aConst(1,2)= 5
aConst(1,3)= 7
aConst(1,4)= 9
aConst(1,5)= 4
aConst(1,6)= 6
aConst(1,7)= 10
aConst(1,8)= 5
aConst(1,9)= 7
m.cSum=0
for m.k=1 to 9
cSum = cSum+aConst[1,k]*Val(SubStr(conSum,k,1))
next
coSum=(cSum%11)%10
return (padl(coSum,1,'0')=substr(m.conSum,10,1))[SRC][/SRC]
...
Рейтинг: 0 / 0
25.10.2004, 12:35
    #32752514
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Ivapara param1
set talk off
if para()=0
Return .t.
endif
private k,conSum,coSum,cSum,aConst,i
do case
case type('m.param1')="C"
m.param1=int(val(m.param1))
case type('m.param1')="N"
*
other
return .t.
endcase
conSum=padl(int(m.param1),10,'0')
dime aConst(1,9)
store 0 to aConst
aConst(1,1)= -1
aConst(1,2)= 5
aConst(1,3)= 7
aConst(1,4)= 9
aConst(1,5)= 4
aConst(1,6)= 6
aConst(1,7)= 10
aConst(1,8)= 5
aConst(1,9)= 7
m.cSum=0
for m.k=1 to 9
cSum = cSum+aConst[1,k]*Val(SubStr(conSum,k,1))
next
coSum=(cSum%11)%10
return (padl(coSum,1,'0')=substr(m.conSum,10,1))

Это расчет контрольной цифры??? А так чтобы полный номер брало и проверяло: дату рождения, пол, и контрольную цифру ???
...
Рейтинг: 0 / 0
25.10.2004, 13:27
    #32752678
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Загоняй номер в компутер и проверяй! В чем проблема? Проверить-то компутером ты можешь только правильность контрольной цифры... Пол не проверишь... :-)
...
Рейтинг: 0 / 0
25.10.2004, 14:52
    #32752976
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
RedrikЗагоняй номер в компутер и проверяй! В чем проблема? Проверить-то компутером ты можешь только правильность контрольной цифры... Пол не проверишь... :-)

Спасибо!
...
Рейтинг: 0 / 0
14.02.2005, 22:42
    #32915269
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
сабж

------------------------------
С уважением, StasK
...
Рейтинг: 0 / 0
15.02.2005, 00:00
    #32915299
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Первые 4 цифры - номер налоговой инспекции где выдан (по адресу из КЛАДР"а), остальные - просто счётчик. Никаких контрольных цифр нет, проверка на достоверность невозможна.
...
Рейтинг: 0 / 0
15.02.2005, 00:01
    #32915300
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
На украине вероятно примерно то же.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
29.04.2009, 12:26
    #35960565
charset
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
на украине и в россии вычисляется по разному. Украина 1-5 разница между ДР и 01011900, 9й пол, 10 контрольное число. ОКПО 8мь символов.

В россии код 12 символов, ОКПО 10. 1-4 код налогового органа
...
Рейтинг: 0 / 0
29.04.2009, 14:05
    #35960925
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
Делал проверку Проверка контрольной цифры-Налоговый и идентификационные коды Украина
Там есть и "вытаскивание " дня рождения и пола
...
Рейтинг: 0 / 0
30.04.2009, 16:38
    #35963839
Grin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификационный номер налогоплательщика
ДЛЯ УКРАИНЫ

код не мой

Проверка ключевания лицевого счета на мфо банка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
PROCEDURE check_ls
LPARAMETERS par1,par2
*par1- МФО
*par2- ЛС
DIMENSION arr( 19 )
STORE  1  TO arr( 1 )
STORE  3  TO arr( 2 )
STORE  7  TO arr( 3 )
STORE  1  TO arr( 4 )
STORE  3  TO arr( 5 )
STORE  3  TO arr( 6 )
STORE  7  TO arr( 7 )
STORE  1  TO arr( 8 )
STORE  3  TO arr( 9 )
STORE  0  TO arr( 10 )
STORE  1  TO arr( 11 )
STORE  3  TO arr( 12 )
STORE  7  TO arr( 13 )
STORE  1  TO arr( 14 )
STORE  3  TO arr( 15 )
STORE  7  TO arr( 16 )
STORE  1  TO arr( 17 )
STORE  3  TO arr( 18 )
STORE  7  TO arr( 19 )
lll=LEN(ALLTRIM(par1))
stroc1=LEFT(par2, 5 )+PADR(par1, 14 ,'0')
res= 0 
FOR i= 1  TO  19 
	res=MOD(res+(val(substr(stroc1,i, 1 ))*arr[i]), 10 )
next
res=MOD(MOD(res+lll, 10 )* 7 , 10 )
if res<>VAL(substr(par1, 5 , 1 ))
   CheckKey=.f.
else 
   CheckKey=.t.
endi
RETURN CheckKey

Проверяет контрольный разряд в коде ЄДРПОУ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Function check_edrpou_ukr(IDK )
Local lnKod,lnCS,ret
If Type('IDK')='N'
	IDK=Padl(Transform(IDK), 8 ,'0')
Else
	IDK=Alltrim(IDK)
Endif

If Len(IDK)<> 8 
	Return - 1 
Endif

If Val(IDK) <  30000000  Or Val(IDK) >  60000000 
	lnCS = Val(Left(IDK,  1 )) +;
		VAL(Substr(IDK,  2 ,  1 )) *  2  +;
		VAL(Substr(IDK,  3 ,  1 )) *  3  +;
		VAL(Substr(IDK,  4 ,  1 )) *  4  +;
		VAL(Substr(IDK,  5 ,  1 )) *  5  +;
		VAL(Substr(IDK,  6 ,  1 )) *  6  +;
		VAL(Substr(IDK,  7 ,  1 )) *  7 
Else
	lnCS = Val(Left(IDK,  1 )) *  7  +;
		VAL(Substr(IDK,  2 ,  1 )) +;
		VAL(Substr(IDK,  3 ,  1 )) *  2  +;
		VAL(Substr(IDK,  4 ,  1 )) *  3  +;
		VAL(Substr(IDK,  5 ,  1 )) *  4  +;
		VAL(Substr(IDK,  6 ,  1 )) *  5  +;
		VAL(Substr(IDK,  7 ,  1 )) *  6 
Endif

*lnKod = lnCS - Int(lnCS /  11 ) *  11 
lnKod=Mod(lnCS, 11 )

If lnKod =  10  Then
	If Val(IDK) <  30000000  Or Val(IDK) >  60000000 
		lnCS = Val(Left(IDK,  1 )) *  3  +;
			VAL(Substr(IDK,  2 ,  1 )) *  4  +;
			VAL(Substr(IDK,  3 ,  1 )) *  5  +;
			VAL(Substr(IDK,  4 ,  1 )) *  6  +;
			VAL(Substr(IDK,  5 ,  1 )) *  7  +;
			VAL(Substr(IDK,  6 ,  1 )) *  8  +;
			VAL(Substr(IDK,  7 ,  1 )) *  9 
	Else
		lnCS = Val(Left(IDK,  1 )) *  9  +;
			VAL(Substr(IDK,  2 ,  1 )) *  3  +;
			VAL(Substr(IDK,  3 ,  1 )) *  4  +;
			VAL(Substr(IDK,  4 ,  1 )) *  5  +;
			VAL(Substr(IDK,  5 ,  1 )) *  6  +;
			VAL(Substr(IDK,  6 ,  1 )) *  7  +;
			VAL(Substr(IDK,  7 ,  1 )) *  8 
	Endif

	lnKod=Mod(lnCS, 11 )

	If lnKod =  10 
		lnKod =  0 
	Endif
Endif
If Val(right(IDK, 1 ))=lnKod
	ret=lnKod
Else
	ret=- 1 
Endif

Return ret


Проверка ИНН физ лица
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
Function check_inn_ukr(IDK ,mode)
Local lnKod,lnCS,ret
If Empty(mode)
	mode= 0 
Endif
If Type('IDK')='N'
	IDK=Transform(IDK)
Else
	IDK=Alltrim(IDK)
Endif

If Len(IDK)<> 10  And Len(IDK)<> 12  And Len(IDK)<> 9 
	Return - 1 
Endif
Do Case
Case Len(IDK)= 10 
* Физ.лицо
	lnCS = Val(Left(IDK,  1 ))   * - 1  +;
		VAL(Substr(IDK,  2 ,  1 )) *  5  +;
		VAL(Substr(IDK,  3 ,  1 )) *  7  +;
		VAL(Substr(IDK,  4 ,  1 )) *  9  +;
		VAL(Substr(IDK,  5 ,  1 )) *  4  +;
		VAL(Substr(IDK,  6 ,  1 )) *  6  +;
		VAL(Substr(IDK,  7 ,  1 )) *  10  +;
		VAL(Substr(IDK,  8 ,  1 )) *  5  +;
		VAL(Substr(IDK,  9 ,  1 )) *  7 

	lnKod=Mod(lnCS, 11 )
	
	If  lnKod= 10 
		lnKod= 0 
	Endif

	If Val(Right(IDK, 1 ))=lnKod
		If mode= 0 
			ret=lnKod
		Else
			ret='Код правильный. Дата рождения-'+Transform(Date( 1899 , 12 , 31 )+Val(Substr(IDK, 1 , 5 )))+'. Пол-'+Iif(Mod(Val(Substr(IDK, 9 , 1 )), 2 )= 0 ,'<Ж>','<М>')
		Endif
	Else
		If mode= 0 
			ret=- 1 
		Else
			ret='Код неправильный'
		Endif
	Endif
Case Len(IDK)= 12 
* юр.лицо
	lnCS = Val(Left(IDK,    1 ))  *  11  +;
		VAL(Substr(IDK,  2 ,  1 ))  *  13  +;
		VAL(Substr(IDK,  3 ,  1 ))  *  17  +;
		VAL(Substr(IDK,  4 ,  1 ))  *  19  +;
		VAL(Substr(IDK,  5 ,  1 ))  *  23  +;
		VAL(Substr(IDK,  6 ,  1 ))  *  29  +;
		VAL(Substr(IDK,  7 ,  1 ))  *  31  +;
		VAL(Substr(IDK,  8 ,  1 ))  *  37  +;
		VAL(Substr(IDK,  9 ,  1 ))  *  41  +;
		VAL(Substr(IDK,  10 ,  1 )) *  43  +;
		VAL(Substr(IDK,  11 ,  1 )) *  47 

	lnKod=Mod(lnCS, 11 )

	If  lnKod= 10 
		lnCS = Val(Left(IDK,    1 ))  *  13  +;
			VAL(Substr(IDK,  2 ,  1 ))  *  17  +;
			VAL(Substr(IDK,  3 ,  1 ))  *  19  +;
			VAL(Substr(IDK,  4 ,  1 ))  *  23  +;
			VAL(Substr(IDK,  5 ,  1 ))  *  29  +;
			VAL(Substr(IDK,  6 ,  1 ))  *  31  +;
			VAL(Substr(IDK,  7 ,  1 ))  *  37  +;
			VAL(Substr(IDK,  8 ,  1 ))  *  41  +;
			VAL(Substr(IDK,  9 ,  1 ))  *  43  +;
			VAL(Substr(IDK,  10 ,  1 )) *  47  +;
			VAL(Substr(IDK,  11 ,  1 )) *  53 
		lnKod=Mod(lnCS, 11 )
		If  lnKod= 10 
			lnKod= 0 
		Endif
	Endif

	If Val(Right(IDK, 1 ))=lnKod
		If mode= 0 
			ret=lnKod
		Else
			ret='Код правильный.'
		Endif
	Else
		If mode= 0 
			ret=- 1 
		Else
			ret='Код неправильный'
		Endif
	Endif
Otherwise
* ТРДПАУ
	lnCS = Val(Left(IDK,    1 ))  *  9  +;
		VAL(Substr(IDK,  2 ,  1 ))  *  11  +;
		VAL(Substr(IDK,  3 ,  1 ))  *  13  +;
		VAL(Substr(IDK,  4 ,  1 ))  *  17  +;
		VAL(Substr(IDK,  5 ,  1 ))  *  19  +;
		VAL(Substr(IDK,  6 ,  1 ))  *  23  +;
		VAL(Substr(IDK,  7 ,  1 ))  *  29  +;
		VAL(Substr(IDK,  8 ,  1 ))  *  31 

	lnKod=Mod(lnCS, 11 )

	If  lnKod= 10 
		lnCS = Val(Left(IDK,    1 ))  *  11  +;
			VAL(Substr(IDK,  2 ,  1 ))  *  13  +;
			VAL(Substr(IDK,  3 ,  1 ))  *  17  +;
			VAL(Substr(IDK,  4 ,  1 ))  *  19  +;
			VAL(Substr(IDK,  5 ,  1 ))  *  23  +;
			VAL(Substr(IDK,  6 ,  1 ))  *  29  +;
			VAL(Substr(IDK,  7 ,  1 ))  *  31  +;
			VAL(Substr(IDK,  8 ,  1 ))  *  37 

		lnKod=Mod(lnCS, 11 )
		If  lnKod= 10 
			lnKod= 0 
		Endif
	Endif

	If Val(Right(IDK, 1 ))=lnKod
		If mode= 0 
			ret=lnKod
		Else
			ret='Код правильный.'
		Endif
	Else
		If mode= 0 
			ret=- 1 
		Else
			ret='Код неправильный'
		Endif
	Endif
Endcase
Return ret

Описание и пример в Excel
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Идентификационный номер налогоплательщика / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]