Маленький скрипт по проверке валидности ИНН на eScript
function CheckINN(Inputs:PropertySet, Outputs:PropertySet) { try { var sINN:String=Inputs.GetProperty("INN"); var re = /\D+/g; var RezCode:Number=1; //0-ошибка,1-успех var RezText:String="ИНН - корректный"; //результат проверки в текстовом виде var ControlNumber1:Number=0; var ControlNumber2:Number=0; if (!re.test(sINN.toString())) { if (sINN.length==10) { //расчет контрольного числа для ЮЛ ControlNumber1=((2*ToInteger(sINN[0]) + 4*ToInteger(sINN[1])+ 10*ToInteger(sINN[2])+ 3*ToInteger(sINN[3]) + 5*ToInteger(sINN[4])+ 9*ToInteger(sINN[5])+ 4*ToInteger(sINN[6]) + 6*ToInteger(sINN[7])+ 8*ToInteger(sINN[8]) )%11)%10; if(ControlNumber1!=ToNumber(sINN[9])) { RezCode=0; RezText="Контрольная сумма ИНН не совпадает"; } } else { if (sINN.length==12) { //расчет контрольного числа для ФЛ ControlNumber1=((7*ToInteger(sINN[0]) + 2*ToInteger(sINN[1])+ 4*ToInteger(sINN[2])+ 10*ToInteger(sINN[3]) + 3*ToInteger(sINN[4])+ 5*ToInteger(sINN[5])+ 9*ToInteger(sINN[6]) + 4*ToInteger(sINN[7])+ 6*ToInteger(sINN[8])+ 8*ToInteger(sINN[9]) )%11)%10; ControlNumber2=((3*ToInteger(sINN[0]) + 7*ToInteger(sINN[1])+ 2*ToInteger(sINN[2])+ 4*ToInteger(sINN[3]) + 10*ToInteger(sINN[4])+ 3*ToInteger(sINN[5])+ 5*ToInteger(sINN[6]) + 9*ToInteger(sINN[7])+ 4*ToInteger(sINN[8])+ 6*ToInteger(sINN[9])+8*ControlNumber1 )%11)%10; if(ControlNumber1!=ToNumber(sINN[10]) || ControlNumber2!=ToNumber(sINN[11])) { RezCode=0; RezText="Контрольная сумма ИНН не совпадает"; } } else { RezCode=0; RezText="ИНН должен содержать 10 или 12 цифр"; } } } else { RezCode=0; RezText="ИНН должен состоять из цифр"; } Outputs.SetProperty("RezCode",RezCode.toString()); Outputs.SetProperty("RezText",RezText.toString()); } finally { sINN=null; RezCode=null; RezText=null; re=null; ControlNumber1=null; ControlNumber2=null; } }
Комментариев нет:
Отправить комментарий