forum.bitel.ru http://forum.bitel.ru/ |
|
ошибка скрипта http://forum.bitel.ru/viewtopic.php?f=22&t=2145 |
Страница 1 из 1 |
Автор: | max [ 07 апр 2009, 16:10 ] |
Заголовок сообщения: | ошибка скрипта |
помогите пожалуйста разобраться с ошибкой в скрипте Код: 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: |
Автор: | Amir [ 07 апр 2009, 16:25 ] |
Заголовок сообщения: | |
Цитата: Код: 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, т.е. последний символ - восьмой. |
Автор: | max [ 08 апр 2009, 00:43 ] |
Заголовок сообщения: | |
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 ] |
Заголовок сообщения: | |
Так поправьте сами. В каком виде он заработал в итоге? |
Автор: | Amir [ 08 апр 2009, 15:22 ] |
Заголовок сообщения: | |
А там помоему только валидация инн и соответственно длина 10. |
Автор: | max [ 09 апр 2009, 09: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; } } |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |