forum.bitel.ru http://forum.bitel.ru/ |
|
Сравнение двух дат при изменении http://forum.bitel.ru/viewtopic.php?f=51&t=9521 |
Страница 1 из 1 |
Автор: | Dog [ 31 июл 2014, 20:53 ] |
Заголовок сообщения: | Сравнение двух дат при изменении |
хочу при изменении двух параметров datetime проверять, что один из них раньше другого. Код: ###Проверка изменения даты onProcessEvent.3.checkErrorMessage="Начать не позднее" не может быть позже или равен "Выполнить до" onProcessEvent.3.checkExpression=processParam.getValue(6) > processParam.getValue(8) onProcessEvent.3.events=paramChanging:6;paramChanging:8 ### но почему то при любом знаке сравнения выдает checkErrorMessage. что я делаю не так? |
Автор: | Администратор [ 05 авг 2014, 14:29 ] |
Заголовок сообщения: | Re: Сравнение двух дат при изменении |
http://stackoverflow.com/questions/2592 ... es-in-java Попробуйте так: Код: onProcessEvent.3.checkExpression=processParam.getValue(6) != null && processParam.getValue(6).after( processParam.getValue(8) )
|
Автор: | Dog [ 05 авг 2014, 15:19 ] |
Заголовок сообщения: | Re: Сравнение двух дат при изменении |
так тоже не работает, выдает checkErrorMessage в любой вариации двух дат. |
Автор: | Администратор [ 05 авг 2014, 15:23 ] |
Заголовок сообщения: | Re: Сравнение двух дат при изменении |
А вот так: Код: onProcessEvent.3.checkExpression=processParam.getValue(6) == null || processParam.getValue(6) == null ||processParam.getValue(6).before( processParam.getValue(8) ) Лог на ошибки посмотрите сразу. |
Автор: | Dog [ 05 авг 2014, 17:20 ] |
Заголовок сообщения: | Re: Сравнение двух дат при изменении |
Код: 08-05/15:18:23 WARN [http-bio-9088-exec-1] JexlEngine - ru.bgcrm.dao.expression.Expression.check@58![97,128]: 'processParam.getValue(6) == null || processParam.getValue(8) == null || processParam.getValue(6).after(processParam.getValue(8));' unknown, ambiguous or inaccessible method after
|
Автор: | Администратор [ 06 авг 2014, 11:37 ] |
Заголовок сообщения: | Re: Сравнение двух дат при изменении |
Так. Проглядел.Этот метод возвращает строковое представление параметра, в коем, разумеется нет метода before либо after. 1) Обновитесь. 2) Сделайте так: Код: onProcessEvent.3.checkExpression=processParam.getParamDate(6) == null || processParam.getParamDate(6) == null ||processParam.getParamDate(6).before( processParam.getParamDate(8) )
|
Автор: | Dog [ 06 авг 2014, 14:11 ] |
Заголовок сообщения: | Re: Сравнение двух дат при изменении |
обновился, checkErrorMessage не выдает. логи чистые. даты можно выставлять любые, т.е. проверка не срабатывает. |
Автор: | Администратор [ 06 авг 2014, 20:08 ] |
Заголовок сообщения: | Re: Сравнение двух дат при изменении |
Настроил тестовый тип, два параметра типа date 51 и 78. Работает вот так: Код: onProcessEvent.5.checkErrorMessage="Начать не позднее" не может быть позже или равен "Выполнить до" onProcessEvent.5.checkExpression=processParam.getParamDate(51) == null || processParam.getParamDate(78) == null || processParam.getParamDate(51).before( processParam.getParamDate(78) ) onProcessEvent.5.events=paramChanged:51;paramChanged:78 Событие *ing вызывается до занесения данных в базу, поэтому выборка из неё не даёт реального значения. Событие *ed - после. При этом транзакция откатывается, данные в БД возвращаются в исходное состояние. |
Автор: | Dog [ 07 авг 2014, 01:13 ] |
Заголовок сообщения: | Re: Сравнение двух дат при изменении |
обновляться надо было? Код: BGCRM v 3.0 build 822 from 06.08.2014 11:56:37 Код: ###Проверка изменения даты onProcessEvent.3.checkErrorMessage="Начать не позднее" не может быть позже или равен "Выполнить до" onProcessEvent.3.checkExpression=processParam.getParamDate(6) == null || processParam.getParamDate(8) == null || processParam.getParamDate(6).before( processParam.getParamDate(8) ) onProcessEvent.3.events=paramChanged:6;paramChanged:8 без разницы. *ed или *ing - в таком виде даёт сменить даты в любой вариации. но мне кажется я понял: Цитата: хочу при изменении двух параметров datetime проверять, что один из них раньше другого. если параметры типа date - то у меня работает проверка, если тип datetime - то не работает. |
Автор: | Администратор [ 11 авг 2014, 17:44 ] |
Заголовок сообщения: | Re: Сравнение двух дат при изменении |
Цитата: если параметры типа date - то у меня работает проверка, если тип datetime - то не работает. Прошу прощения, проглядел. http://www.bgcrm.ru/doc/3.0/javadoc/ru/ ... ction.html Тогда так попробуйте: Код: onProcessEvent.3.checkExpression=processParam.getParamDateTime(6) == null || processParam.getParamDateTime(8) == null || processParam.getParamDateTime(6).before( processParam.getParamDateTime(8) )
|
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |