Основные правила
Строковые константы задаются в одинарных кавычках. Для использования одинарных кавычек внутри строковой константы, знак одинарной кавычки удваивается.
Блок кода |
---|
'Раздел', 'Тема: ''Для согласования''' |
Для обозначения того, что значение атрибута не определено, используется специальное значение null.
Блок кода | ||
---|---|---|
| ||
registration == null ? false : true |
Блок кода | ||||
---|---|---|---|---|
| ||||
'№' + registration.number.prefix + registration.number.number + registration.number.suffix
|
Однако, если РКК не зарегистрирована, то значение атрибута registration.number будет неопределенно, и такое выражение может привести к ошибке. Чтобы этого избежать, можно использовать условный оператор, который вернет пустую строку, если номер не определен:
Блок кода | ||
---|---|---|
| ||
registration ==null ? '': registration.number==null ? '' : '№' + registration.number.prefix + registration.number.number + registration.number.suffix |
Другой способ избежать ошибок, если значения атрибутов не определены – использование «безопасной адресации». Тогда если неопределенно значение объекта, к атрибуту которого нужно обратиться, вместо ошибки будет возвращено значение Null. Для «безопасной адресации» перед точкой добавляется знак вопроса:
Блок кода | ||
---|---|---|
| ||
'№' + registration?.number?.prefix + registration?.number?.number + registration?.number?.suffix |
Операции сравнения
Операция
Равно
Не равно
Меньше
Меньше или равно
Больше
Больше или равно
Знак
==
!=
<
<=
>
>=
Буквенное выражение
eq
ne
lt
le
gt
ge
Примечание | ||
---|---|---|
| ||
Дополнительно могут использоваться:
|
Математические операции
Операция
Сложение
Вычитание
Умножение
Деление
Остаток от деления
Степень
Знак
+
-
*
/
%
^
Буквенное выражение
div
mod
Примечание | ||
---|---|---|
| ||
Сложение может использоваться как для чисел, так и для строк. Остальные операции – только для чисел. Поддерживается стандартный порядок выполнения математических операций в выражениях. |
Логические операции
Операция
И
Или
Отрицание
Знак
&&
||
!
Буквенное выражение
and
or
Условный оператор
<Условие> ? <Значение, если условие выполнено> : <Значение, если условие не выполнено>
Специальные зарегистрированные функции и переменные
Здесь описаны наиболее востребованные переменные и функции. Дополнительные возможности использования зарегистрированных функций нужно уточнять у разработчиков.
#this
Переменная для обращения к контекстному объекту, над которым вычисляется SpEL-выражение.
#hasRole(<объект>, <идентификатор_роли>)
Функция, определяющая наличие указанной роли у текущего пользователя в контексте указанного объекта. В качестве объекта в данный момент допустимо использовать переменную #this. Идентификатор роли передается как строковая константа. Функция возвращает значение «true» или «false».
Блок кода | ||
---|---|---|
| ||
#hasRole(#this, 'Supervisor') |
#isClerk(<объект>, <иерархический_путь_к_атрибуту>)
Функция, определяющая наличие у текущего пользователя системной роли «Делопроизводитель» для указанного в параметрах функции подразделения в контексте указанного объекта. В качестве объекта в данный момент допустимо использовать переменную #this. Иерархический путь к атрибуту должен указывать на атрибут с типом SOBeard, соответствующий подразделению. Если в качестве значения параметра передать значение null, то будет определено наличие роли «Делопроизводитель» для места регистрации. Функция возвращает значение «true» или «false».
Блок кода | ||
---|---|---|
| ||
#isClerk(#this,null) |
Блок кода | ||
---|---|---|
| ||
#isClerk(#this,'sending.department') |
#getUserDepartment()
Функция для вычисления подразделения текущего пользователя.
#hasLink(<объект>, <идентификатор_типа_отношения>)
функция, проверяющая наличие у объекта ссылки с указанным типом отношения. В качестве объекта в данный момент допустимо использовать переменную #this. Возможные типы отношения для объекта нужно уточнять у разработчика. Функция возвращает значение «true» или «false».
Например, наличие у объекта ссылки с типом отношения «verification», говорит о том, что документ был заверен ЭП.
Блок кода |
---|
#hasLink(#this,'verification') |
При использовании функции нужно учесть, что могут существовать нестандартные ссылки, для которых использование функции недопустимо.
Примеры
Текущий пользователь
T(ru.intertrust.cmj.af.core.AFSession).get().currentUser().getBeard()
Текущая дата
T(ru.intertrust.cmj.af.misc.AFDate).createCurrent()
Увеличение / уменьшение даты
функции rollYears, rollMounths, rollDays класса AFDate изменяют дату на указанное в параметре количество лет, месяцев, дней соответственно. Отрицательный параметр уменьшает дату. Доступны с версии 4.6
Пример: в поле соответствующее свойству схемы, устанавливается значение на месяц раньше текущей даты
T(ru.intertrust.cmj.af.misc.AFDate).createCurrent().rollMounths(-1)
Первый элемент %-имени пользователя, указанного в свойстве схемы SDepartment с типом SOBeard
не массив
SDepartment != null ? SDepartment.toString(T(ru.intertrust.cmj.af.so.SOBeard.ToStringFormat).CMDOMINO_STD).split('%')[0] : ''
массив, берем первый элемент списка
SDepartment != null ? T(com.google.common.collect.Lists).transform(SDepartment, T(ru.intertrust.cmj.rest.vcards.VCardResource).vcardTobeard).get(0).toString(T(ru.intertrust.cmj.af.so.SOBeard.ToStringFormat).CMDOMINO_STD).split('%')[0] : ''панель | |
---|---|
Структура
|