|
Алгоритм проверки ИНН 12 знаков | ☑ | ||
---|---|---|---|---|
0
serega1977
11.12.21
✎
12:36
|
На сайте egrul есть вот такой алгоритм, для расчёта ИНН 10 и 12 знаков. Для 10 сделал обработку всё работает., а вот для 12 нужна помощь разобраться с алгоритмом.
//1. Вычисляется контрольная сумма по 11-ти знакам со следующими весовыми коэффициентами: (7,2,4,10,3,5,9,4,6,8,0) //2. Вычисляется контрольное число(1) как остаток от деления контрольной суммы на 11 //3. Если контрольное число(1) больше 9, то контрольное число(1) вычисляется как остаток от деления контрольного числа(1) на 10 //4. Вычисляется контрольная сумма по 12-ти знакам со следующими весовыми коэффициентами: (3,7,2,4,10,3,5,9,4,6,8,0). //5. Вычисляется контрольное число(2) как остаток от деления контрольной суммы на 11 //6. Если контрольное число(2) больше 9, то контрольное число(2) вычисляется как остаток от деления контрольного числа(2) на 10 //7. Контрольное число(1) проверяется с одиннадцатым знаком ИНН и контрольное число(2) проверяется с двенадцатым знаком ИНН. //В случае их равенства ИНН считается правильным. Вопрос1. В п.1 написаны весовые коэфф. последний ноль, его нужно использоваться для расчета в произведении? Вопрос2. В п.3 мне не понятно как может быть контрольное число (1) больше 9 Просьба подсказать как нужно правильно прочитать данный алгоритм |
|||
1
serega1977
11.12.21
✎
12:40
|
По вопросу 2, думаю разобрался., если остаток от деления 10 получится.
|
|||
2
Kassern
11.12.21
✎
12:41
|
(0) у вас есть возможность в типовой конфе глянуть?
|
|||
3
МихаилМ
11.12.21
✎
12:44
|
(0) обсуждалось неоднократно. В поиск.
|
|||
4
serega1977
11.12.21
✎
12:46
|
(2) нет
|
|||
5
serega1977
11.12.21
✎
12:47
|
(3) да как то не нашёл в обсуждениях
|
|||
6
Ненавижу 1С
гуру
11.12.21
✎
12:51
|
https://ru.m.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика
Раздел вычисление контрольных цифр |
|||
7
Мимохожий Однако
11.12.21
✎
12:53
|
(4) Странно
|
|||
8
Kassern
11.12.21
✎
12:54
|
||||
9
serega1977
11.12.21
✎
13:08
|
(7) почему? у меня есть только учебная платформа.
|
|||
10
serega1977
11.12.21
✎
13:09
|
(7,8) - спасибо, читаю
|
|||
11
Kassern
11.12.21
✎
13:09
|
(9) ну раз учебная, тогда и сами придумайте алгоритм для 11 и 12 разряда и сверяйте с веденными данными
|
|||
12
serega1977
11.12.21
✎
13:12
|
(9) да собственно и написал, только как говорится пока что то не выходит правильный результат, отсюда и возник вопрос а правильно ли читаю условия алгоритма.
|
|||
13
Мимохожий Однако
11.12.21
✎
15:29
|
(12) Запускай базу в режиме отладки и смотри пошагово, что ожидаешь и что получаешь.
|
|||
14
serega1977
11.12.21
✎
15:38
|
(13) - всё решил как написано здесь https://ru.m.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика
Так что всем спасибо!!! |
|||
15
Volodja
11.12.21
✎
15:48
|
Функция глВалидностьБИН(Значение,ВыдатьСообщение=1) Экспорт
// Вычисление контрольного разряда Статус = 0; Если СтрДлина(СокрЛП(Значение))<12 Тогда Если ВыдатьСообщение=1 Тогда Сообщить("Количество знаков в ИИН/БИН меньше 12!","!!!"); КонецЕсли; ИначеЕсли СтрЧислоВхождений(Значение, Лев(Значение,1))=12 Тогда Если ВыдатьСообщение=1 Тогда Сообщить("Цифра " + Лев(Значение,1) + " повторяется 12 раз!","!!!"); КонецЕсли; Иначе ПодстрокаИН11 = Лев(Значение,11); // копируем первые 11 символов КонтрольноеЗначение = Число(Сред(Значение,12,1)); СуммаРазрядов = 1*Сред(ПодстрокаИН11,1,1)+ 2*Сред(ПодстрокаИН11,2,1)+ 3*Сред(ПодстрокаИН11,3,1)+ 4*Сред(ПодстрокаИН11,4,1)+ 5*Сред(ПодстрокаИН11,5,1)+ 6*Сред(ПодстрокаИН11,6,1)+ 7*Сред(ПодстрокаИН11,7,1)+ 8*Сред(ПодстрокаИН11,8,1)+ 9*Сред(ПодстрокаИН11,9,1)+ 10*Сред(ПодстрокаИН11,10,1)+ 11*Сред(ПодстрокаИН11,11,1); ВычисленноеКонтрольноеЗначение = СуммаРазрядов % 11; Если ВычисленноеКонтрольноеЗначение = 10 Тогда СуммаРазрядов = 3*Сред(ПодстрокаИН11,1,1)+ 4*Сред(ПодстрокаИН11,2,1)+ 5*Сред(ПодстрокаИН11,3,1)+ 6*Сред(ПодстрокаИН11,4,1)+ 7*Сред(ПодстрокаИН11,5,1)+ 8*Сред(ПодстрокаИН11,6,1)+ 9*Сред(ПодстрокаИН11,7,1)+ 10*Сред(ПодстрокаИН11,8,1)+ 11*Сред(ПодстрокаИН11,9,1)+ 1*Сред(ПодстрокаИН11,10,1)+ 2*Сред(ПодстрокаИН11,11,1); ВычисленноеКонтрольноеЗначение = СуммаРазрядов % 11; КонецЕсли; Если (ВычисленноеКонтрольноеЗначение = КонтрольноеЗначение) И (СуммаРазрядов<>0) Тогда Статус = 1; Иначе Если ВыдатьСообщение=1 Тогда Сообщить("Введенный ИИН/БИН некорректен!","!!!"); КонецЕсли; Статус = 0; КонецЕсли; КонецЕсли; Возврат Статус; КонецФункции |
|||
16
serega1977
11.12.21
✎
16:39
|
(15) - Решал через массив, как то попроще и кода поменьше
|
|||
17
Volodja
11.12.21
✎
17:32
|
(16) Это у нас так было в типовой вроде. Не мой.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |