BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 20 июн 2025, 19:53

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: ошибка скрипта
СообщениеДобавлено: 07 апр 2009, 16:10 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 08 мар 2007, 20:44
Сообщения: 1570
Откуда: Челябинск
Карма: 18
помогите пожалуйста разобраться с ошибкой в скрипте
Код:
KPP_PARAM_ID = 19;
 
paramId = event.getParamId();
value   = event.getValue();
 
print( "paramId=" + paramId + "; value=" + value );
 
if( paramId == KPP_PARAM_ID )
{
    if( value.length() < 9 )
    {
        event.setError( "Длина параметра меньше 9" );
        return;
    }
}

paramId = event.getParamId();
value = event.getValue();
//
print( "paramId=" + paramId + "; value=" + value );
//
int mult(String s, int[] c) {
   int len = s.length();
   if (len > c.length)
      len = c.length;
   int summ = 0;
   for (int j = 0; j < len; j++) {
      if (!Character.isDigit(s.charAt(j)))
         return -255;
      summ += c[j] * ((int) s.charAt(j) - (int) '0');
   }
   return summ;
}
 
boolean KPP(String kpp) {
   if (kpp == null)
      return false;
   if (kpp.length() == 9)
      return (char) ((int) '0' + mult(kpp, new int[] { 2, 4, 10, 3, 5, 9,
            4, 6, 8 }) % 11 % 10) == kpp.charAt(9);
   if (kpp.length() == 12)
      return ((char) ((int) '0' + mult(kpp, new int[] { 7, 2, 4, 10, 3,
            5, 9, 4, 6, 8 }) % 11 % 10) == kpp.charAt(10))
            && ((char) ((int) '0' + mult(kpp, new int[] { 3, 7, 2, 4,
                  10, 3, 5, 9, 4, 6, 8 }) % 11 % 10) == kpp.charAt(9));
   return false;
}
 
if( paramId == KPP_PARAM_ID )
{
   if( event.getValue().equals("") ) return;
 
   if( ! KPP(event.getValue()) )
   {
     event.setError("Не правильный КПП");
     return;
   }
}

однако при его исполнении вылезает вот такая ошибка:
Код:
Contract ИН-09-0017-В
GENERATE_TIME: 07.04.09 14:56:41
EXECUTION_STOP_TIME: 07.04.09 14:56:41
PROCESS_TIME: 16

OUT:
paramId=19; value=744801001
paramId=19; value=744801001


ERROR:


EXCEPTIONS:
Sourced file: inline evaluation of: ``KPP_PARAM_ID = 19;     paramId = event.getParamId();  value   = event.getValue() . . . '' : Method
Invocation kpp.charAtjava.lang.StringIndexOutOfBoundsException: String index out of range: 9
        at java.lang.String.charAt(String.java:687)
        at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at bsh.Reflect.invokeOnMethod(Unknown Source)
        at bsh.Reflect.invokeObjectMethod(Unknown Source)
        at bsh.Name.invokeMethod(Unknown Source)
        at bsh.BSHMethodInvocation.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHBinaryExpression.eval(Unknown Source)
        at bsh.BSHReturnStatement.eval(Unknown Source)
        at bsh.BSHIfStatement.eval(Unknown Source)
        at bsh.BSHBlock.evalBlock(Unknown Source)
        at bsh.BSHBlock.eval(Unknown Source)
        at bsh.BshMethod.invokeImpl(Unknown Source)
        at bsh.BshMethod.invoke(Unknown Source)
        at bsh.BshMethod.invoke(Unknown Source)
        at bsh.Name.invokeLocalMethod(Unknown Source)
        at bsh.Name.invokeMethod(Unknown Source)
        at bsh.BSHMethodInvocation.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHUnaryExpression.eval(Unknown Source)
        at bsh.BSHIfStatement.evaluateCondition(Unknown Source)
        at bsh.BSHIfStatement.eval(Unknown Source)
        at bsh.BSHBlock.evalBlock(Unknown Source)
        at bsh.BSHBlock.eval(Unknown Source)
        at bsh.BSHBlock.eval(Unknown Source)
        at bsh.BSHIfStatement.eval(Unknown Source)
        at bsh.Interpreter.eval(Unknown Source)
        at bsh.Interpreter.eval(Unknown Source)
        at bsh.Interpreter.eval(Unknown Source)
        at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:158)
        at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:248)
        at bitel.billing.server.contract.action.ActionUpdateParameterType1.doAction(ActionUpdateParameterType1.java:46)
        at bitel.billing.server.Executer.doModule(Executer.java:693)
        at bitel.billing.server.Executer.doPost(Executer.java:177)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:37)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)


WARNINGS:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 апр 2009, 16:25 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Цитата:
Код:
if (kpp.length() == 9)
      return (char) ((int) '0' + mult(kpp, new int[] { 2, 4, 10, 3, 5, 9,
            4, 6, 8 }) % 11 % 10) == kpp.charAt(9);

Длина 9, т.е. последний символ - восьмой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 апр 2009, 00:43 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 08 мар 2007, 20:44
Сообщения: 1570
Откуда: Челябинск
Карма: 18
Amir писал(а):
Цитата:
Код:
if (kpp.length() == 9)
      return (char) ((int) '0' + mult(kpp, new int[] { 2, 4, 10, 3, 5, 9,
            4, 6, 8 }) % 11 % 10) == kpp.charAt(9);

Длина 9, т.е. последний символ - восьмой.

ясно, поправьте тогда скрипт в викки так как брал его от туда!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 апр 2009, 11:42 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Так поправьте сами. В каком виде он заработал в итоге?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 апр 2009, 15:22 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
А там помоему только валидация инн и соответственно длина 10.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 апр 2009, 09:18 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 08 мар 2007, 20:44
Сообщения: 1570
Откуда: Челябинск
Карма: 18
Администратор писал(а):
Так поправьте сами. В каком виде он заработал в итоге?

вот в таком:
Код:
KPP_PARAM_ID = 19;
 
paramId = event.getParamId();
value   = event.getValue();
 
print( "paramId=" + paramId + "; value=" + value );
 
if( paramId == KPP_PARAM_ID )
{
    if( value.length() < 9 )
    {
        event.setError( "Длина параметра меньше 9" );
        return;
    }
}

paramId = event.getParamId();
value = event.getValue();
//
print( "paramId=" + paramId + "; value=" + value );
//
int mult(String s, int[] c) {
   int len = s.length();
   if (len > c.length)
      len = c.length;
   int summ = 0;
   for (int j = 0; j < len; j++) {
      if (!Character.isDigit(s.charAt(j)))
         return -255;
      summ += c[j] * ((int) s.charAt(j) - (int) '0');
   }
   return summ;
}
 
boolean KPP(String kpp) {
   if (kpp == null)
      return false;
   if (kpp.length() == 9)
      return (char) ((int) '0' + mult(kpp, new int[] { 2, 4, 10, 3, 5, 9,
            4, 6, 8 }) % 11 % 10) == kpp.charAt(9);
   if (kpp.length() == 12)
      return ((char) ((int) '0' + mult(kpp, new int[] { 7, 2, 4, 10, 3,
            5, 9, 4, 6, 8 }) % 11 % 10) == kpp.charAt(10))
            && ((char) ((int) '0' + mult(kpp, new int[] { 3, 7, 2, 4,
                  10, 3, 5, 9, 4, 6, 8 }) % 11 % 10) == kpp.charAt(8));
   return false;
}
 
if( paramId == KPP_PARAM_ID )
{
   if( event.getValue().equals("") ) return;
 
   if( ! KPP(event.getValue()) )
   {
     event.setError("Не правильный КПП");
     return;
   }
}

в викки попрвлю


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.042s | 28 Queries | GZIP : On ]