Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Проверка ИИН в типовых конфигурациях для Казахстана

Проверка ИИН в типовых конфигурациях для Казахстана
Я
   1C_ID
 
11.01.13 - 08:23
В Казахстане нет такого ресурса как миста и многие программисты ошиваются тут. Поэтому создам тему, возможно еще не было, в поиске не нашел.
С 1 января 2013 внедрили ИИН вместо РНН и СИК и людям выдавали их в спешке, поэтому у некоторых могут быть ошибки. В типовых конфигурациях реализована проверка на последний символ и на количество символов.
Я же написал отчетик, который выводит в таблицу возможные ошибки в первых 7-ми цифрах, остальные проверить нельзя.
Чуть подробней можно узнать тут(http://startadmin.ru/1c/proverka-pravilnosti-iin-v-tipovyih-konfiguratsiyah-1s-predpriyatie-dlya-kazahstana.html)
скачать можно с яндекса (http://narod.ru/disk/65352912001.770057ed5a8940cf3646d4d86ee202c0/ЗУППроверка7ЦифрИИН.erf.html)
 
 
   1C_ID
 
1 - 11.01.13 - 08:23
Для Бухгалтерии Казахстана сделаю в обед
   1C_ID
 
2 - 11.01.13 - 08:24
И у себя на фирме из 200+ человек нашел 5 неверных, у которых первые цифры, означающие год ошиблись на 9 лет или на несколько месяцев, так что полезно будет
   aka AMIGO
 
3 - 11.01.13 - 08:33
перекодируй:
Функция Валид()
    
   //ИНН = СокрЛП(ИНН);
 
    
    Если СтрДлина(СокрЛП(ИНН))=10 Тогда
        КонтрольнаяСтрока = Прав(СокрЛП(ИНН),1);
        СуммаРазрядов =    
        2*Сред(ИНН,1,1)+
        4*Сред(ИНН,2,1)+
        10*Сред(ИНН,3,1)+
        3*Сред(ИНН,4,1)+
        5*Сред(ИНН,5,1)+
        9*Сред(ИНН,6,1)+
        4*Сред(ИНН,7,1)+
        6*Сред(ИНН,8,1)+
        8*Сред(ИНН,9,1);
        
        ВычисленноеКонтрольноеЗначение = ""+(СуммаРазрядов % 11) % 10;
        Если ВычисленноеКонтрольноеЗначение <> КонтрольнаяСтрока Тогда
            Возврат "Ошибка в контрольном разряде ИНН!";
        КонецЕсли;
        Возврат "";
        
    ИначеЕсли СтрДлина(СокрЛП(ИНН))=12 Тогда
        КонтрольнаяСтрока = Прав(СокрЛП(ИНН),2);
        СуммаРазрядов =    
        7*Сред(ИНН,1,1)+
        2*Сред(ИНН,2,1)+
        4*Сред(ИНН,3,1)+
        10*Сред(ИНН,4,1)+
        3*Сред(ИНН,5,1)+
        5*Сред(ИНН,6,1)+
        9*Сред(ИНН,7,1)+
        4*Сред(ИНН,8,1)+
        6*Сред(ИНН,9,1)+
        8*Сред(ИНН,10,1);
        
        СуммаРазрядов1 = (СуммаРазрядов % 11) % 10;
        
        СуммаРазрядов2 =    
        3*Сред(ИНН,1,1)+
        7*Сред(ИНН,2,1)+
        2*Сред(ИНН,3,1)+
        4*Сред(ИНН,4,1)+
        10*Сред(ИНН,5,1)+
        3*Сред(ИНН,6,1)+
        5*Сред(ИНН,7,1)+
        9*Сред(ИНН,8,1)+
        4*Сред(ИНН,9,1)+
        6*Сред(ИНН,10,1)+
        8*СуммаРазрядов1;
        
        ВычисленноеКонтрольноеЗначение = ""+СуммаРазрядов1+(СуммаРазрядов2 % 11) % 10;
        Если ВычисленноеКонтрольноеЗначение <> КонтрольнаяСтрока Тогда
            Возврат "Ошибка в контрольном разряде ИНН!";
        КонецЕсли;
        Возврат "";
    Иначе
        Возврат "Ошибочная длина ИНН!";
    КонецЕсли;
    
КонецФункции
   aka AMIGO
 
4 - 11.01.13 - 08:34
>>ошибки в первых 7-ми цифрах, остальные проверить нельзя. <<
можно. ошибка.
   1C_ID
 
5 - 11.01.13 - 08:36
(3) В ЗУП данная проверка реализована. Если не правильный разряд, то выходит сообщение об ошибке и текст становится красным, про контрольный разряд я в курсе, но если первые неправильны, то и контрольный посчитан при выдаче не правильно
   aka AMIGO
 
6 - 11.01.13 - 08:36
+4 да, милле пардоне, зачеркиваем (4) .. ошибся я
   isarzh
 
7 - 11.01.13 - 10:57
[code]
Функция ПроверкаБИНИИН(знач БИН_ИИН)
    перем ЧислоБИН_ИИН;
    перем ИИНБезНулей;
    ЧислоБИН_ИИН=0;
   // Длина
 
    если СтрДлина(БИН_ИИН)>12 тогда
        возврат ложь;
    конецесли;
   // (0..9)
 
    ИННБезНулей = СтрЗаменить(БИН_ИИН,"0","1");
    Попытка
        ЧислоБИН_ИИН = Число(ИННБезНулей);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат Ложь;
    КонецПопытки;          
   // Проверка на одинаковость всех цифр
 
    Если СтрЧислоВхождений(БИН_ИИН, Лев(БИН_ИИН, 1)) = 12 Тогда 
        Возврат Ложь;
    КонецЕсли;
b1 = новый Массив (12);
b2 = новый Массив (12);
a1 = Новый Массив;
Контроль = 0;
Контроль2=0;
i=1;
b1.Вставить(1,1); b2.Вставить(1,3);
b1.Вставить(2,2); b2.Вставить(2,4);
b1.Вставить(3,3); b2.Вставить(3,5);
b1.Вставить(4,4); b2.Вставить(4,6);
b1.Вставить(5,5); b2.Вставить(5,7);
b1.Вставить(6,6); b2.Вставить(6,8);
b1.Вставить(7,7); b2.Вставить(7,9);
b1.Вставить(8,8); b2.Вставить(8,10);
b1.Вставить(9,9); b2.Вставить(9,11);
b1.Вставить(10,10); b2.Вставить(10,1);
b1.Вставить(11,11); b2.Вставить(11,2);
a1.Вставить(12,число(Сред(БИН_ИИН,12,1))); 
пока i<12 цикл
    a1.Вставить(i,число(Сред(БИН_ИИН,i,1)));
        если i<12  Тогда
            Контроль=Контроль+a1[i]*b1[i];
        конецесли;
    i=i+1;
КонецЦикла;
    Контроль = ?(Контроль=0,0,Контроль%11);
   //Сообщить(Контроль);
 
если Контроль<10 тогда     
    если a1[12]=Контроль тогда
        возврат Истина;
    иначе 
        Возврат Ложь;
    конецесли;
конецесли;
если  Контроль=10 тогда
    i=1;
    пока i<12 цикл
        Контроль=Контроль+a1[i]*b2[i];
        i=i+1;
    конеццикла;
Контроль = ?(Контроль=0,0,Контроль%11);
 //Сообщить(Контроль);
 
если a1[12]=Контроль тогда
        возврат Истина;
    иначе
        возврат Ложь;
    конецесли;       
конецесли;

возврат ложь;
конецфункции
[/code]
   1C_ID
 
8 - 11.01.13 - 12:41
(7)так это опять проверка контрольной суммы, а я создал ветку про то что составляющие этой суммы будут неправильные и эта сумма будет свидетельствовать что все правильно.
   1C_ID
 
9 - 11.01.13 - 12:43
Например, проверка эта реализована для БК в общем модуле ОбщегоНазначения Функция БИНИИНСоответствуетТребованиям(Знач ИдентификационныйНомер) Экспорт, зачем было ее вручную писать
   1C_ID
 
10 - 11.01.13 - 12:46
И вот версия для Бухгалтерии Казахстана 2.0
http://narod.ru/disk/65359659001.c36add3ad819980c2865b12621b23322/БК_Проверка7ЦифрИИН.erf.html
 
 Рекламное место пустует

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует