BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 мар 2024, 06:10

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Сравнение двух дат при изменении
СообщениеДобавлено: 31 июл 2014, 20:53 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
хочу при изменении двух параметров 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 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
http://stackoverflow.com/questions/2592 ... es-in-java
Попробуйте так:
Код:
onProcessEvent.3.checkExpression=processParam.getValue(6) != null && processParam.getValue(6).after( processParam.getValue(8) )


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 авг 2014, 15:19 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
так тоже не работает, выдает checkErrorMessage в любой вариации двух дат.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 авг 2014, 15:23 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
А вот так:
Код:
onProcessEvent.3.checkExpression=processParam.getValue(6) == null || processParam.getValue(6) == null ||processParam.getValue(6).before( processParam.getValue(8) )

Лог на ошибки посмотрите сразу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 авг 2014, 17:20 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
Код:
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 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Так. Проглядел.Этот метод возвращает строковое представление параметра, в коем, разумеется нет метода before либо after.
1) Обновитесь.
2) Сделайте так:
Код:
onProcessEvent.3.checkExpression=processParam.getParamDate(6) == null || processParam.getParamDate(6) == null ||processParam.getParamDate(6).before( processParam.getParamDate(8) )


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 авг 2014, 14:11 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
обновился, checkErrorMessage не выдает. логи чистые. даты можно выставлять любые, т.е. проверка не срабатывает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 авг 2014, 20:08 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Настроил тестовый тип, два параметра типа 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 - после. При этом транзакция откатывается, данные в БД возвращаются в исходное состояние.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 авг 2014, 01:13 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
обновляться надо было?
Код:
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 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Цитата:
если параметры типа 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) )


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

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


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

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


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

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