Имя: Пароль:
1C
1С v8
ИНН сотрудника в ЗУП
0 uuu_ggg
 
19.05.12
15:12
когда заполняешь ИНН сотрудника,если что-то заполнено неверно он выделяет красным цветом.А кто-нибудь знает, по какому принципу он считает,что ИНН неверный??ну то что ,цифры какой то не хватает-это понятно...в других случаях почему...
1 ДенисЧ
 
19.05.12
15:15
А в код посмотреть? Аллах не велит?
2 uuu_ggg
 
19.05.12
15:16
ну я просто подумала,может кто-то знает)))
3 ДенисЧ
 
19.05.12
15:17
(2) а я тебе и подсказал, кто знает...
4 Luhtas
 
19.05.12
15:18
(0) В ИНН какя то цифра, последняя, это контрольное число остальных чисел, почитай в Вики...так прога и анализирует.
5 Armando
 
19.05.12
15:26
6 aka AMIGO
 
19.05.12
19:16
Функция Валид(ИНН)
   
   ИНН = СокрЛП(ИНН);
   
   Если СтрДлина(ИНН)=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;
       Если ВычисленноеКонтрольноеЗначение <> КонтрольнаяСтрока Тогда
           Возврат "Ошибка в ИНН!";
       КонецЕсли;
   Иначе
       Возврат "Ошибочная длина ИНН!";
   КонецЕсли;
   
КонецФункции
7 aka AMIGO
 
19.05.12
19:20
а здесь - менее кривая ф-ция:
Функция Валид()
   
   //ИНН = СокрЛП(ИНН);
   
   Если СтрДлина(СокрЛП(ИНН))=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;
       Если ВычисленноеКонтрольноеЗначение <> КонтрольнаяСтрока Тогда
           Возврат "Ошибка в контрольном разряде ИНН!";
       КонецЕсли;
       Возврат "";
   Иначе
       Возврат "Ошибочная длина ИНН!";
   КонецЕсли;
   
КонецФункции
8 aka AMIGO
 
19.05.12
19:22
+ если этот гкод очистить от мусора и причесать - вполне сойдет для проверки
только это для 7. в 8-ку не писал такое, нет понтов
9 Armando
 
19.05.12
22:26
В БСП есть модуль РегламентированныеДанныеКлиентСервер с функциями для проверок ИНН, КПП, ОГРН и пр.
Программист всегда исправляет последнюю ошибку.