Это — вторая часть цикла “Начало работы с Jira Automation”, в которой мы разбираем Smart Values и учимся применять их на практике внутри автоматизаций Jira.
Меня зовут Егор Наумов, я менеджер проектов в BetBoom, в команде «Регистрация, идентификация, платформа». Уже больше полугода я отвечаю за координацию команды и активно развиваю автоматизацию процессов в Jira. До недавнего времени я пользовался Jira только как обычный пользователь — изучение Automation стало новым вызовом, и теперь я делюсь практическим опытом.
Если в первой статье мы шаг за шагом создавали своё первое правило и подключали базовые действия, то теперь пойдём глубже: разберём, как устроены Smart Values, где их использовать, как они помогают автоматизации и почему без них не обходится ни одно сложное правило.
В этой статье я покажу, как с нуля работать со Smart Values:\
— где в интерфейсе они используются
— как устроены коллекции, даты, условия и форматирование
— как избежать ошибок
— и как создать первые полностью рабочих сценарии.
Оглавление
Где в интерфейсе вставлять Smart Values (практические примечания)
Практические сценарии и готовые шаблоны правил
5.1. Логирование изменений: комментарий при изменении поля (пример — Priority)
5.2. Автообновление описания при назначении исполнителя
5.3. Установка Due date при переходе в статус «In Progress»
5.4. Автосоздание подзадач с шаблоном
5.5. Маркировка задач: добавить Label по условию
5.6. Подсчёты и арифметика (пример: перерасчёт Story Points)Расширенные возможности
6.1. Форматирование и преобразования
6.2. Работа с датами и форматами
6.3. Math expressions ({{#=}} ... {{/}})Готовые шаблоны
10.1. Комментарий при изменении Assignee
10.2. Лог перехода статуса
10.3. Подведение итогов подзадач (в parent)
10.4. Условная вставка (если есть assignee)
10.5. Сумма Story Points у подзадач (пример)
1. Для чего нужны Smart Values?
Smart Values — плейсхолдеры (переменные) в Jira Automation. Они позволяют встраивать данные задачи, проекта, пользователя и времени в текст действий (комментариев, обновлений полей, условий). Благодаря ним одно правило покрывает множество кейсов: вместо ручного управления шаблонами вы формируете универсальные правила, которые подставляют реальные значения во время выполнения.
Пример простейшей задачи: вместо отправки одинакового комментария «Задача закрыта» вы можете автоматом добавлять: кто закрыл, когда и тд. — и всё это без единой строки кода, только используя Smart Values.
2. Основы: синтаксис и первые примеры
Синтаксис: Smart Value — в фигурных скобках {{...}}. Пример:
{{issue.key}}— ключ задачи (например, PROJ-123){{issue.summary}}— заголовок{{assignee.displayName}}— имя исполнителя{{now}}— текущее время
Как это работает: при срабатывании правила, Jira подставляет реальные значения в те места, где вы использовали Smart Values.
Пример:
Задача {{issue.key}} — {{issue.summary}} обновлена пользователем {{initiator.displayName}} в {{now}}.

Результат:
Задача FLEX-326 — Задача для тестаобновлена пользователемЕгор Наумов в 2025-11-23 08:40.

3. Где в интерфейсе вставлять Smart Values (практические примечания)
Smart Values можно вставлять в текстовые поля действий rule-а:
Add comment — текст комментария
Edit issue fields — в значениях полей (Description, Labels, Custom fields)
Send email / Send Slack — в теме и в теле сообщения
Advanced compare condition — в поле условия
Create issue — в шаблоны заголовков и описаний новых задач.
Практическая подсказка: при вводе текста в UI у Jira обычно есть подсказка или кнопка “View smart values” / “Insert smart value” — используйте её, чтобы увидеть доступные значения для текущего контекста.
4. Часто используемые Smart Values
Ниже — самые часто встречающиеся Smart Values. Начните с них:
{{issue.key}}— ключ задачи{{issue.summary}}— заголовок{{issue.description}}— описание{{issue.status.name}}— имя статуса{{issue.priority.name}}— приоритет{{issue.assignee.displayName}}— Имя исполнителя задачи{{issue.reporter.displayName}}— Имя автора задачи{{issue.created}},{{issue.updated}}— даты создания/обновления{{now}}— текущее время{{project.name}}— имя проекта{{initiator.displayName}}— пользователь, вызвавший rule (иногда user/actor){{fieldChange.fromString}},{{fieldChange.toString}}— старое / новое значение при изменении поля{{#issue.subtasks}}...{{/}}— перебор подзадач
Примечание: для кастомных полей обычно используется {{issue.customfield_12345}} (где 12345 — id поля). Если доступно имя, иногда можно использовать {{issue.Поле}}, но точный синтаксис зависит от конфигурации — проверяйте через UI.
5. Практические сценарии и готовые шаблоны правил
Вставляйте их прямо в JIRA - шаги и тексты полностью готовы
5.1. Логирование изменений: комментарий при изменении поля (пример — Priority)
Задача: при изменении приоритета необходимо добавить комментарий: кто и когда изменил приоритет, с предыдущим и новым значением.
Шаги:
Триггер: Значение поля изменено → поле Приоритет.
Действие: Добавить комментарий с текстом:
Пример:
Приоритет задачи изменён с "{{fieldChange.fromString}}" на "{{fieldChange.toString}}".
Изменение сделано: {{initiator.displayName}} ({{now.format("yyyy-MM-dd HH:mm")}})

Результат:
Приоритет задачи изменён с "Medium" на "Highest".
Изменение сделано: Егор Наумов (2025-11-23 09:13)

Пояснение: fieldChange.fromString и fieldChange.toString подставят старое и новое значение. initiator — пользователь, инициировавший изменение (может быть user в некоторых контекстах).
5.2. Автообновление описания при назначении исполнителя
Задача: при назначении исполнителя в описание необходимо дописать:
- кто назначен
- дата назначения.
Шаги:
Триггер: Значение поля изменено → поле Исполнитель.
Действие: Редактировать задачу → поле Description:
Пример:
{{issue.description}}-----Назначен исполнитель: {{assignee.displayName}} (назначено {{now.format("yyyy-MM-dd")}})

Результат:
Тут было какое-то описание задачи...-----Назначен исполнитель: Егор Наумов (назначено 2025-11-12)

Пояснение: ----- — это горизонтальная линия. Jira автоматически превращает пять дефисов в разделитель, который используется только для визуального оформления и не влияет на логику задачи.
5.3. Установка Due date при переходе в статус «In Progress»
Задача: при переходе задачи в статус в работе нужно установить Start Date = сейчас + 7 дней.
Шаги:
Триггер: Состояние задачи изменено → Задача переведена в статус: В работе.
-
Действие: Редактировать задачу → поле Due date =
{{now.plusDays(7).format("yyyy-MM-dd")}}
Схема триггера

Пояснение: now.plusDays(7) сдвигает дату на + 7 дней; форматируем в формате yyyy-MM-dd.
5.4. Автосоздание подзадач с шаблоном
Задача: при создании задачи типа Story создавать подзадачу "Анализ".
Шаги:
Триггер: Задача создана → условие: Тип задачи = История.
-
Действие: Создать подзадачу:
Создать подзадачу с Резюме: Анализ:
{{issue.key}}—{{issue.summary}}Описание: Подзадача для
{{issue.key}}
(источник:{{issue.reporter.displayName}})

Схема триггера 
Результат работы триггера
Пояснение: можно добавлять любые поля — приоритет, метки — с помощью Smart Values.
5.5. Маркировка задач: добавить Label по условию
Задача: если в Summary встречается слово “инцидент”, нужно добавить label incident.
Пояснение: используем toLowerCase и contains для нечувствительного поиска.
Шаги:
Триггер: Изменено значение поля -> Описание.
-
Условие: Условие: {{smart values}}
{{issue.summary.toLowerCase.contains("инцидент")}} = true
-
Действие: Редактировать поля задачи → Метки → Добавить "инцидент"

Схема триггера 
Результат работы триггера
5.6. Подсчёты и арифметика (пример: перерасчёт Story Points)
Задача: при связывании Story с Epic суммировать сторипоинты по всем Story и записать в кастомное поле Story Point (customfield_10022).
Шаги:
Триггер: Задача привязана → Типы ссылок: Problem/Incident.
Ветвление правила или связанных задач: Текущие задачи
Найти задачи:
issue in linkedIssues({{issue.key}}, "causes")-
Действие: Редактировать задачу → Story Point →
{{lookupIssues.customfield_10022.sum}}
Схема триггера 
Результат работы триггера
Уточнение: в качестве типа ссылок можно использовать любые другие типы связей между задачами.
6. Расширенные возможности
6.1. Форматирование и преобразования
.toUpperCase() / .toLowerCase() — изменение регистра:
{{issue.summary.toUpperCase}}.substring(число) — Возвращает символы, находящиеся после указанного количества символов:
{{issue.summary.substring(0, 50)}}.replace(Старый текст, Новый текст) — замена:
{{issue.description.replace("\n", " ")}}.trim() — убрать пробелы в начале и конце:
{{issue.summary.trim}}.concat(текст) — склеивание строк:
{{issue.summary.concat(" — срочно!")}}.split(текст) — разделить строку на массив:
{{issue.labels.split(",")}}
(полезно в #each).join(текст) — склеить массив обратно:
{{issue.labels.split(",").join(" | ")}}.match(текст) — проверка совпадения по регулярке:
{{issue.summary.match("bug|inc")}}.startsWith(текст) — начинается ли строка с…:
{{issue.summary.startsWith("BUG")}}.endsWith(текст) — заканчивается ли строка на…:
{{issue.summary.endsWith("?")}}.length — длина строки:
{{issue.description.length}}.leftPad(число, текст) — дополнение слева, пока не будет достигнуто указанное общее количество символов:
{{issue.key.leftPad(10, "0")}}.rightPad(число, текст) — дополнение справа, пока не будет достигнуто указанное общее количество символов:
{{issue.summary.rightPad(30, ".")}}
6.2. Работа с датами и форматами
{{now}} — текущее время в формате 1979-11-01T11:23:12.0+0000.
{{now}}.plusDays(n) / .minusHours(n) — арифметика времени.
{{now.plusDays(3)}}
{{issue.created.minusHours(5)}}.format("dd.MM.yyyy HH:mm") — форматирование.
{{now.format("dd.MM.yyyy HH:mm")}}.plusWeeks(n) / .minusWeeks(n) — работа с неделями.
{{now.plusWeeks(1)}}.plusMonths(n) / .minusMonths(n) — добавление/убавление месяцев.
{{issue.created.plusMonths(2)}}.plusYears(n) / .minusYears(n) — работа с годами.
{{now.minusYears(1)}}.dayOfWeek — день недели.
{{now.dayOfWeek}}.dayOfYear — номер дня в году.
{{now.dayOfYear}}.isBefore(date) / .isAfter(date) — сравнение дат.
{{now.isAfter(issue.created)}}
6.3. Math expressions ({{#=}} ... {{/}})
Для вычислений используют специальный блок:
{{#=}} {{issue.customfield_11243}} + 5 {{/}}
Сложение.
{{#=}} 3 + 7 {{/}}Вычитание.
{{#=}} 10 - 4 {{/}}Умножение.
{{#=}} 6 * 2 {{/}}Деление.
{{#=}} 10 / 4 {{/}}Остаток от деления.
{{#=}} 7 % 3 {{/}}Степень.
{{#=}} 2 ^ 4 {{/}}ABS(x) — абсолютное значение.
{{#=}} ABS(-12) {{/}}ROUND(x, n) — округление.
{{#=}} ROUND(3.1415, 2) {{/}}FLOOR(x) — округление вниз.
{{#=}} FLOOR(5.9) {{/}}CEIL(x) — округление вверх.
{{#=}} CEIL(5.1) {{/}}MIN(...) — минимум.
{{#=}} MIN(3, 7, 1) {{/}}MAX(...) — максимум.
{{#=}} MAX(3, 7, 1) {{/}}SQRT(x) — квадратный корень.
{{#=}} SQRT(16) {{/}}Сравнения (> < = !=).
{{#=}} 5 > 2 {{/}}Логические значения (TRUE / FALSE).
{{#=}} TRUE {{/}}Константы PI и e.
{{#=}} PI * 2 {{/}}
7. Отладка и тестирование правил

Тестирование
Всегда тестируйте правила на тестовом проекте или тестовой задаче, прежде чем включать в прод.
Журнал
После каждого запуска правила откройте Журнал — там видно:
какие шаги прошли успешно
какие Smart Values подставились
текст, который был записан в комментарий / поле (со всеми под��тановками).
Проверка на null
Используйте условные блоки, чтобы избежать вставок пустых значений:
{{#if(assignee)}}Исполнитель: {{assignee.displayName}}{{/}}
8. Типичные ошибки и как их избежать
Опечатки в Smart Value —
{{issues.key}}вместо{{issue.key}}. Всегда проверяйте.Неправильный контекст — вы используете
{{issue}}там, где вам нужен{{triggerIssue}}. Читайте документацию по ветвлениям.Поле отсутствует — кастомное поле не заполнено → null. Используйте проверки #if.
Неверное форматирование даты — используйте .format("pattern").
Попытка использовать Smart Values в неподдерживаемом действии — некоторые старые actions не поддерживают подстановки.
9. Best practices — как организовать правила и шаблоны
Именуйте правила чётко (что делает, где применяется).
Документируйте описание с перечнем используемых Smart Values.
Разделяйте правила: не перегружайте одно правило множеством ветвлений — легче отлаживать несколько простых.
Централизуйте шаблоны: используйте одинаковую структуру комментариев и полей по всему проекту.
Мониторьте Audit log: на первых этапах регулярно проверяйте результаты.
Отключайте правило, если оно ведёт себя неправильно, прежде чем исправлять — иначе получите лавину лишних действий.
10. Готовые шаблоны
Ниже — готовые шаблоны, которые можно вставлять в свою автоматизацию:
10.1. Комментарий при изменении Assignee
Пример:
Исполнитель изменён:
- Был: {{fieldChange.fromString}}
- Стал: {{fieldChange.toString}}
Изменил: {{initiator.displayName}} ({{now.format("yyyy-MM-dd HH:mm")}})
Результат:
Исполнитель изменён:- Был: Иван Петров- Стал: Егор Наумов- Изменил: Анна Смирнова (2025-11-14 11:42)
10.2. Лог перехода статуса
Пример:
Статус: {{issue.status.name}} → {{fieldChange.toString}}Переход совершил: {{initiator.displayName}} ({{now}})
Результат:
Статус: In Progress → Code ReviewПереход совершил: Егор Наумов (2025-11-14T11:43:25.102+0300)
10.3. Подведение итогов подзадач (в parent)
Пример:
Подзадачи для {{issue.key}}:{{#issue.subtasks}}• {{key}} — {{status.name}} ({{assignee.displayName}}){{/}}
Результат:
Подзадачи для PROJ-482:• PROJ-483 — In Progress (Иван Петров)• PROJ-484 — To Do (не назначен)• PROJ-485 — Done (Егор Наумов)
10.4. Условная вставка (если есть assignee)
Пример:
{{#if(assignee)}}Исполнитель: {{assignee.displayName}{{/}}
Результат:
Исполнитель: Егор Наумов
10.5. Сумма Story Points у подзадач (пример)
Пример:
PROJ-483 → SP = 3PROJ-484 → SP = 5PROJ-485 → SP = 2
Общий Story Points: {{#=}}{{#issue.subtasks}}{{customfield_10022}}{{^last}} + {{/}}{{/issue.subtasks}}{{/}}
Результат:
Общий Story Points: 10
11. Полезные ссылки
Основная справка по Smart Values (Atlassian):
https://support.atlassian.com/cloud-automation/docs/jira-smart-values-issues/Даты и время в Smart Values:
https://support.atlassian.com/cloud-automation/docs/jira-smart-values-date-and-time/
