forum.bitel.ru
http://forum.bitel.ru/

не понимаю как вообще это работает.
http://forum.bitel.ru/viewtopic.php?f=49&t=11284
Страница 1 из 1

Автор:  Galkov [ 25 янв 2016, 13:02 ]
Заголовок сообщения:  Re: Разные мелочи (CRM)

совсем не мелочью было бы объяснение логических дейсвий под символами
=~ и !~

особенно это актуально, ввиду того что логически в синтаксе выражений не разобраться. вот почему например -
process.getStatusId() !=10 and 1 !~ user.getGroupIds() - нет ошибки, а
3 !~ process.getStatusId() ..... - синтаксическая ошибка
3 =~ process.getStatusId() ..... - синтаксическая ошибка


почему результаты из функций включаются в сравнение логически по-разному?

мне нужно например правило запрета правки по всех статусах кроме одного для одной группы с возможностью править в любом статусе для всех остальных групп. перепробавал всё - никак не могу понять как описать имеющимся функционалом.

Автор:  Galkov [ 25 янв 2016, 15:13 ]
Заголовок сообщения:  Re: Разные мелочи (CRM)

# проверка заполнения поля описания:
#http://www.bgcrm.ru/doc/3.0/javadoc/ru/bgcrm/model/process/Process.html
onProcessEvent.20.events=statusChanging:12
onProcessEvent.20.checkExpression=process.getDescription() == ""
onProcessEvent.20.checkErrorMessage= Невозможно поменять статус без заполнения Описания.
---------------------------------------

не работает. т.е. работает так, как-будто process.getDescription() всегда возращает пустую строку.
а что такое это Description? это поле текстовое в процессе - как в скриншоте или что-то ещё?

Вложения:
qwest1.png
qwest1.png [ 266.73 КБ | Просмотров: 6056 ]

Автор:  Galkov [ 25 янв 2016, 16:34 ]
Заголовок сообщения:  не понимаю как вообще это работает.

http://docs.bitel.ru/pages/viewpage.act ... Id=6193536

процесс проходит по не нескольким статусам(ну скажем 10,11,12). группе пользователей(ID=1), что его заводит запрещено править процесс после того как он ушёл из начального статуса(ID=10).

пишу в настройке типов процессов:

onProcessEvent.19.events=paramChanging
onProcessEvent.19.checkExpression=1 =~ user.getGroupIds() and process.getStatusId() !=10
onProcessEvent.19.checkErrorMessage=После создания процесса редактировать вам нельзя.
---------------------------------------------------

работает не правильно. запрещает пользоватлям И ДРУГИХ ГРУПП, которые не входят в id=1 редактировать.
попытки менять условия не приводят к нужному результату.

пробовал вообще разобраться с логикой работы этой фигни.
так
onProcessEvent.19.checkExpression=1 !~ user.getGroupIds()
ещё вроде работает, а вот с оператором and он по-моему что-то другое сравнивает. но никак не два условия -ПОСЛЕ- вычислений состояния в этих двух условиях.

Автор:  Администратор [ 26 янв 2016, 12:20 ]
Заголовок сообщения:  Re: не понимаю как вообще это работает.

Цитата:
почему результаты из функций включаются в сравнение логически по-разному?

Потому что операции с тильдой проверяют на (не)вхождение элемент в коллекцию элементов.
Цитата:
3 !~ process.getStatusId() ..... - синтаксическая ошибка

Справа должна быть коллекция.
Цитата:
3 =~ process.getStatusId() ..... - синтаксическая ошибка

То же самое.

Автор:  Администратор [ 26 янв 2016, 12:25 ]
Заголовок сообщения:  Re: не понимаю как вообще это работает.

Попробуйте так:
Цитата:
onProcessEvent.20.checkExpression=su.isNotBlank(process.getDescription())

JEXL - это фактически Java, а в терминах JAVA вы пытались сравнить _ссылку_ на строку, которая является описанием со ссылкой на вновь созданную пустую строку.
Обычно это неверный способ. Это два разных объекта в хипе и ссылки будут на разные участки памяти.

Автор:  Администратор [ 26 янв 2016, 12:29 ]
Заголовок сообщения:  Re: не понимаю как вообще это работает.

По поводу вашей фигни тоже ничего не понял, прошу объяснить подробнее, что вы добиваетесь.
Возможно, что проблема в приоритете операций, где-то надо скобок расставить.

Автор:  Galkov [ 26 янв 2016, 17:51 ]
Заголовок сообщения:  Re: не понимаю как вообще это работает.

Администратор писал(а):
По поводу вашей фигни тоже ничего не понял.


ну может быть, зато мне почему-то очень сильно помогло :mrgreen: я очень много сразу понял. спасибо. :facepalm: :mrgreen:

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/