Использование выражений в журналах
В журналах Citeck помимо простых атрибутов (name, counterparty и др.) можно использовать выражения — SQL-подобные конструкции, вычисляемые в момент запроса к базе данных. Они поддерживают математические операции, функции работы с датами, а также поиск, группировку и сортировку с гарантией актуальности данных.
Выражение — набор функций, операторов, скобок и атрибутов, который позволяет вычислить значение на основе данных в БД.
Примечание
Вычисляемые атрибуты, которые описаны в типе, имеют схожую с выражениями функциональность и позволяют более гибко настраивать значения атрибутов, но у них есть ограничения при поиске, группировке и сортировке.
Эти операции доступны, только если для вычисляемого атрибута настроено сохранение в БД, но и в этом случае есть ограничение — их перерасчёт будет произведён только когда произойдёт обновление сущности.
Если обновляются связанные сущности или глобальные объекты, которые использовались для вычисления, то вычисляемый атрибут не пересчитается. В отличие от вычисляемых атрибутов, выражения в журнале позволяют настраивать вычисления, которые вычисляются в момент запроса для каждой записи, что позволяет искать, группировать и сортировать по ним с гарантией актуальности данных.
Выражения настраиваются в дополнительных настройках колонки в поле «Атрибут для загрузки».
Для настройки выражения нужно, чтобы в содержимом этого поля была или функция, или выражение, полностью обёрнутое в скобки.
Примеры
Расчёт разницы между датами в днях
ceil(((date_part('epoch', date0) - date_part('epoch', date1)) / (60 * 60 * 24)))
date0 и date1 — атрибуты с датой или датой-временем, между которыми происходит расчёт.
ceil — округлить до ближайшего целого, которое больше или равно аргументу. Вместо этой функции можно использовать:
floor — отбросить дробную часть;
round — округлить результат до ближайшего целого.
Произвольные математические операции
ceil(field0 + field1)
(field0 + field1)
(10 * (field0 + field1))
field0 и field1 — атрибуты сущности. Сложность выражений и количество атрибутов не ограничены.
Получить месяц и год
to_char(date0, 'MM.YYYY')
date0 — атрибут с датой или датой-временем.