Функции типа «Условие» позволяют настраивать дополнительные правила перехода между задачами, созданных в рамках воркфлоу. Функции типа «Уведомление» позволяют отправлять пользователям разные уведомления по ходу работы воркфлоу.
Примечание
Настройка предназначена для опытных администраторов. Список навигационных свойств можно посмотреть по ссылке. Для получения дополнительных свойств обратитесь в поддержку: support@timetta.com.
Рассмотрим создание нескольких функций условия.
Важно
Созданные выражения должны быть типа boolean, то есть содержать значения, которые могут быть только true или false:
true, воркфлоу будет следовать по ветке с заданным условиемfalse — по ветке «Иначе»В выражениях допускаются арифметические и логические операторы, а также встроенные функции. Подробнее — Выражения вычисляемых полей.
Пример: Необходимо выполнить проверку общего количества часов по проекту. Если сумма оценочных часов превышает 200, то добавляется дополнительный этап согласования проекта. Чтобы задать такое услови:
Перейдём в настройки Воркфлоу и откроем нужную сущность.
Для добавления новой функции типа «Условие» нажмём на кнопку Новая функция и выберем «Условие»:

Заполним наименование условия. Условие «Иначе» будет создано автоматически.

Для добавления условия нажмём на кнопку Создать. Чтобы использовать сводные показатели (например, общие часы или расходы по проекту) в условиях, необходимо в выражении функции, с типом «Условие», добавить навигационное свойство «Total» для нужного свойства сущности.
Введём нужное выражение, по которому будет выполняться проверка, — [Total.EstimatedHours]>=200:

Важно
Функцию «Total» можно использовать для свойств сущностей «ProjectTotal» и «TimesheetTotal». Чтобы ознакомиться со всем набором свойств сущностей необходимо перейти в Настройки -> Конфигурация -> Менеджер сущностей -> Наименование сущности
Схема воркфлоу с функцией «Условие»:

| Тип сущности | Условие | Выражение |
|---|---|---|
| Запрос ресурса | Запрос на универсальный ресурс или актуализацию бронирования по пользователю | [TeamMember.Resource.ResourceType] = 'Generic' |
| Запрос ресурса | Забронированные часы равны запрошенным часам | Round([RequestedHours], 1) = Round([BookedHours], 1) |
| Таймшит | Срок отправки таймшита на согласование — в текущем году | DateDiff('year', GetDate(), [DueDate])=0 |
| Таймшит | Количество неоплачиваемых часов меньше заданного | [Total.NonBillableDuration]<=50 |
| Проект | Общая сумма оценочных затрат больше заданной | ([Total.EstimatedExpensesBC] + [Total.EstimatedCostBC]) >= 2000000 |
| Проект | Общая сумма оценочных часов больше заданной | [Total.EstimatedHours]>=200 |
| Проект | Проверка того, что: а) у проекта есть Мастер-версия; б) в Мастер-версии есть плановые часы; в) эти плановые часы не равны 0 | ! IsNull([Total.PlannedHours]) and ([Total.PlannedHours]! =0) |
| Проект | Заполнено дополнительное поле типа «Список» | ! IsNull([LookupValue4id]) |
| Заявка на затраты | Общая сумма по заявке на затраты — в заданном диапазоне | (1000<=[TotalAmount]& &[TotalAmount]<=10000) |
| Заявка на затраты | В проект добавлено дополнительное поле типа «Список» (например, тип проекта). При согласовании заявки на затраты проверяем, что значение доп. поля проекта, с которым связана заявка, соответствует заданному | [Project.LookUpValue6.Name]='Внешний' |
| Задача | В задаче указаны проект и работа проекта | ! IsNull([ProjectId]) & & ! IsNull([ProjectTaskId]) |
| Задача | Работа проекта относится к первому уровню иерархии | [ProjectTask.Indent]==0 |
| Задача | Работа проекта относится ко второму уровню иерархии | [ProjectTask.Indent]==1 |
| Задача | Проверка тега задачи | CollectionAny([Tags], 'Name', 'Наименование тега') |
| Задача | Проверка кода подразделения, к которому относится исполнитель задачи | [Assigned.Department.Code]='LEGAL' |
Перейти на русскую версию?