|
Алгоритм расчета контрольной суммы ИНН для Украины | ☑ | ||
---|---|---|---|---|
0
sqr4
03.09.13
✎
13:31
|
Нужно проверять правильность введенного ИНН для Украинских партнеров. Не могу нигде найти формулы, по которым рассчитывается контрольное число для различных длин ИНН. Прошу помощи
|
|||
1
Molinor
03.09.13
✎
13:35
|
http://www.foxclub.ru/sol/solution606.php
Можно отсюда вытащить. |
|||
2
Molinor
03.09.13
✎
13:35
|
||||
3
sqr4
03.09.13
✎
13:58
|
спасибо сейчас уже изучим
|
|||
4
aka AMIGO
03.09.13
✎
14:00
|
||||
5
aka AMIGO
03.09.13
✎
14:01
|
+4 правда, это для 77, но в умелых ручках - не проблема.
да и алгоритм, ИМХО, не должен отличаться |
|||
6
pumbaEO
03.09.13
✎
14:03
|
Развелось вас что-то в последнее время. v8: Проверка контрольной цифры-Налоговый и идентификационные коды Украина
|
|||
7
sqr4
03.09.13
✎
14:14
|
(6) это я находил, ввожу ИНН банков украинских, ругается гад.
|
|||
8
aka AMIGO
03.09.13
✎
14:20
|
||||
9
sqr4
03.09.13
✎
14:21
|
(4) это для русских как я понял ИНН у них в Украине там по другому как то
|
|||
10
aka AMIGO
03.09.13
✎
14:21
|
(9) в яндексе, нажми букву "Я" справа от топика, там много всего
|
|||
11
sqr4
03.09.13
✎
14:22
|
(8) Тоже для русской версии wiki:Идентификационный_номер_налогоплательщика
|
|||
12
sqr4
03.09.13
✎
14:28
|
Мб есть онлайн сервис, который украинские ИНН проверяет? Или может кто подкинет списочек ИНН украинских, для теста
|
|||
13
sqr4
03.09.13
✎
14:44
|
ЕстьОшибкаВКоде=Ложь;
ИНН = СокрЛП(ИНН); Если СтрДлина(ИНН)<>10 И СтрДлина(ИНН)<>9 И СтрДлина(ИНН)<>12 Тогда #Если Клиент Тогда Сообщить("Не соответствует длина кода ИНН", СтатусСообщения.Важное); #КонецЕсли Возврат Ложь; КонецЕсли; Если СтрДлина(ИНН)=10 Тогда ДлинаПроверки = Число(Left(ИНН, 1)) * -1 +Число(Сред(ИНН, 2, 1)) * 5 + Число(Сред(ИНН, 3, 1)) * 7 + Число(Сред(ИНН, 4, 1)) * 9 +Число(Сред(ИНН, 5, 1)) * 4 +Число(Сред(ИНН, 6, 1)) * 6 +Число(Сред(ИНН, 7, 1)) * 10 +Число(Сред(ИНН, 8, 1)) * 5 + Число(Сред(ИНН, 9, 1)) * 7; ДлинаКода = ДлинаПроверки-Цел(ДлинаПроверки/11)*11; Если ДлинаКода=10 Тогда ДлинаКода = 0; КонецЕсли; Если Число(Прав(ИНН,1))=ДлинаКода Тогда ЕстьОшибкаВКоде = Ложь; Иначе ЕстьОшибкаВКоде = Истина; КонецЕсли; ИначеЕсли СтрДлина(ИНН)=12 Тогда ДлинаПроверки = Число(Лев(ИНН, 1)) * 11 + Число(Сред(ИНН, 2, 1)) * 13 + Число(Сред(ИНН, 3, 1)) * 17 + Число(Сред(ИНН, 4, 1)) * 19 + Число(Сред(ИНН, 5, 1)) * 23 + Число(Сред(ИНН, 6, 1)) * 29 + Число(Сред(ИНН, 7, 1)) * 31 + Число(Сред(ИНН, 8, 1)) * 37 + Число(Сред(ИНН, 9, 1)) * 41 + Число(Сред(ИНН, 10, 1)) * 43 + Число(Сред(ИНН, 11, 1)) * 47; ДлинаКода = ДлинаПроверки-Цел(ДлинаПроверки/11)*11; Если ДлинаКода = 10 Тогда ДлинаПроверки = Число(Лев(ИНН, 1)) * 13 + Число(Сред(ИНН, 2, 1)) * 17 + Число(Сред(ИНН, 3, 1)) * 19 + Число(Сред(ИНН, 4, 1)) * 23 + Число(Сред(ИНН, 5, 1)) * 29 + Число(Сред(ИНН, 6, 1)) * 31 + Число(Сред(ИНН, 7, 1)) * 37 + Число(Сред(ИНН, 8, 1)) * 41 + Число(Сред(ИНН, 9, 1)) * 43 + Число(Сред(ИНН, 10, 1)) * 47 + Число(Сред(ИНН, 11, 1)) * 53; ДлинаКода = ДлинаПроверки-Цел(ДлинаПроверки/11)*11; Если ДлинаКода=10 Тогда ДлинаКода = 0; КонецЕсли; КонецЕсли; Если Число(Прав(ИНН,1))=ДлинаКода Тогда ЕстьОшибкаВКоде = Ложь; Иначе ЕстьОшибкаВКоде = Истина; КонецЕсли; Иначе ДлинаПроверки = Число(Лев(ИНН, 1)) * 9 + Число(Сред(ИНН, 2, 1)) * 11 + Число(Сред(ИНН, 3, 1)) * 13 + Число(Сред(ИНН, 4, 1)) * 17 + Число(Сред(ИНН, 5, 1)) * 19 + Число(Сред(ИНН, 6, 1)) * 23 + Число(Сред(ИНН, 7, 1)) * 29 + Число(Сред(ИНН, 8, 1)) * 31; ДлинаКода = ДлинаПроверки-Цел(ДлинаПроверки/11)*11; Если ДлинаКода=10 Тогда ДлинаПроверки = Число(Лев(ИНН, 1)) * 11 + Число(Сред(ИНН, 2, 1)) * 13 + Число(Сред(ИНН, 3, 1)) * 17 + Число(Сред(ИНН, 4, 1)) * 19 + Число(Сред(ИНН, 5, 1)) * 23 + Число(Сред(ИНН, 6, 1)) * 29 + Число(Сред(ИНН, 7, 1)) * 31 + Число(Сред(ИНН, 8, 1)) * 37; ДлинаКода = ДлинаПроверки-Цел(ДлинаПроверки/11)*11; Если ДлинаКода=10 Тогда ДлинаКода = 0; КонецЕсли; Если Число(Прав(ИНН,1))=ДлинаКода Тогда ЕстьОшибкаВКоде = Ложь; Иначе ЕстьОшибкаВКоде = Истина; КонецЕсли; Иначе ЕстьОшибкаВКоде = Истина; КонецЕсли; КонецЕсли; Если ЕстьОшибкаВКоде Тогда #Если Клиент Тогда Сообщить("Ошибка в коде ИНН", СтатусСообщения.Важное); #КонецЕсли КонецЕсли; Возврат Не ЕстьОшибкаВКоде; Вот такую вот хрень состряпал, вот этот вот ИНН 235983905269 не пропускает, а он есть! |
|||
14
sqr4
03.09.13
✎
14:50
|
Косяк получается когда ДлинаКода=10, повторный прогон дает неправильный результат. Прошу помощи у спецов
|
|||
15
sqr4
03.09.13
✎
14:53
|
Есть ли у кого нибудь ссылка на документацию нормальную про украинские ИНН
|
|||
16
DS
03.09.13
✎
15:56
|
Попробуй в один проход:
Коэф[0] = 3; Коэф[1] = 7; Коэф[2] = 2; Коэф[3] = 4; Коэф[4] = 10; Коэф[5] = 3; Коэф[6] = 5; Коэф[7] = 9; Коэф[8] = 4; Коэф[9] = 6; Коэф[10] = 8; |
|||
17
DS
03.09.13
✎
16:02
|
(14) У юрлица длина ИНН = 12. Длина ИНН в 10 - у физлица. Алгоритмы разные.
|
|||
18
sqr4
03.09.13
✎
16:43
|
Ну подсчитай с этими коэффициентами для 235983905269, выходит?
|
|||
19
DS
03.09.13
✎
18:44
|
(18) Выходит.
|
|||
20
sqr4
03.09.13
✎
20:32
|
И сколько сумма получилась? Почему у меня то не выходит. Математик чтоли я плохой совсем
|
|||
21
DS
03.09.13
✎
21:22
|
Ты прав. Это я напутал.
Попробуй так как в (13), но во втором проходе используй 17, 19, . . ., 59. |
|||
22
sqr4
03.09.13
✎
21:27
|
для двух вариантов сработало! Спасибо огромное, буду тестить. Можно спросить как вы до этого дошли, логически? Или нашли какой то подтверждающий документ?
|
|||
23
DS
03.09.13
✎
21:37
|
Официальный документ есть только по ЕДРПОУ и банковскому счету. Все остальное - под грифом "сомнительно", но на 99% работает.
|
|||
24
sqr4
03.09.13
✎
21:41
|
Ну чтоже, я написал в налоговую службу Украины. Мб что-нибудь внятное ответят. Спасибо еще раз
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |