---
title: "Состояния выполнения"
description: "Каждое состояние, через которое проходит выполнение кампании, сколько выживает ожидающий запуск, и что записывает провал про сломавшийся узел."
canonical: https://docs.afp.monster/ru/reference/execution-states
updated: 2026-08-19
pageType: reference
---

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

Панель выполнения на холсте не печатает эти пять имён. Она показывает, активно ли выполнение, узел, на котором оно находится, пройденный путь и сообщение об ошибке, если оно есть; имена ниже описывают, что вместе означают эти поля.

## Сводка

| Состояние | Что делает выполнение | Переходит в, при чём |
|---|---|---|
| Выполняется | Проходит по графу, выполняя каждый достигнутый узел | Ожидание, Завершено или Провалено — в зависимости от того, что произведёт следующий узел |
| Ожидание ответа | Припарковано на `condition`, у которого включён `wait_for_reply` | Выполняется при ответе; Провалено после 7 дней молчания |
| Ожидание задержки | Припарковано на узле `delay` с запланированным возобновлением | Выполняется, когда ожидание истекает; Завершено, если ответ его отменяет; Провалено, если возобновление так и не запускается |
| Завершено | Закончено. Больше никакие узлы не запустятся | Финальное |
| Провалено | Остановлено с записанной ошибкой | Финальное |

## Диаграмма состояний

```d2 title="Execution states and the transitions between running, waiting for a reply, waiting out a delay, completed and failed"
direction: down
begin: "Начало" {shape: circle}
running: "Выполняется"
awaitingReply: "Ожидание ответа"
awaitingDelay: "Ожидание задержки"
completed: "Завершено"
failed: "Провалено"
finish: "Конец" {shape: circle}
begin -> running: "приходит совпадающее событие"
running -> awaitingReply: "условие настроено ждать ответа"
awaitingReply -> running: "человек отвечает или нажимает кнопку"
running -> awaitingDelay: "достигнут узел delay"
awaitingDelay -> running: "ожидание истекает"
awaitingDelay -> completed: "ответ отменяет ожидание, настроенное продолжать только если нет ответа"
running -> completed: "узел stop, или выход, к которому ничего не подключено"
running -> failed: "узел посещён повторно, или зависшее выполнение подобрано разверткой"
awaitingReply -> failed: "нет ответа 7 дней"
awaitingDelay -> failed: "запланированный шаг так и не запускается"
completed -> finish
failed -> finish
```

## Выполняется

- **Активно:** да
- **Записывается:** узел, на котором оно сейчас находится, и каждый узел, через который оно уже прошло
- **Заканчивается на:** узле `stop`, выходе, к которому ничего не подключено дальше, или на повторно посещённом узле

Выполняемое выполнение проходит по графу за один проход: триггер, затем каждый подключённый узел по очереди. Узлы-действия отправляют своё ЛС, публикуют свой комментарий, или меняют теги контакта и передают управление дальше. Ничего не планируется — выполнение приостанавливается только на узле `delay` или на `condition`, ожидающем ответа.

Действие, вызвавшее ошибку, останавливает продвижение выполнения, не завершая его. Выполнение остаётся активным с ошибкой, записанной за этим узлом, поэтому панель может показывать активное выполнение, которое никуда не движется; развёртка позже закрывает его как провалившееся.

Повторное посещение узла завершает выполнение и записывает ошибку цикла с именем этого узла. Каждый узел в графе запускается не более одного раза за выполнение.

## Ожидание ответа

- **Активно:** да
- **Записывается:** запись "ожидание ответа" за узлом `condition`, на котором оно припарковано
- **Выживает:** 7 дней без ответа

`condition` с включённым `wait_for_reply` паркует выполнение вместо немедленной оценки. Следующее ЛС человека, ответ на комментарий в той же ветке, или нажатие кнопки будит его, и текст этого ответа — это то, с чем сопоставляет условие: Match отправляет выполнение через первый выход, No Match — через второй.

Выполнение, которое ждёт 7 дней без ответа, закрывается как провалившееся, с сообщением, что человек так и не ответил. Это применяется и к тестовым выполнениям — тестовое выполнение, припаркованное на ожидающем условии, не получает настоящего ответа и истекает так же.

## Ожидание задержки

- **Активно:** да
- **Записывается:** запись "запланированная задержка" с именем ожидания в секундах
- **Выживает:** всё запланированное ожидание; возобновление, просроченное больше чем на час, вместо этого проваливается

Узел `delay` планирует возобновление и прекращает продвижение. Настроенный `delay_seconds` ограничивается диапазоном от 1 секунды до 31 536 000 секунд (365 дней); значение вне этого диапазона обрезается без ошибки.

Задержка с включённым `only_if_no_reply` проверяет наличие ответа, когда ожидание истекает. Если человек ответил в любой момент во время ожидания, выполнение завершается вместо продолжения по ветке.

Возобновление, которое так и не приходит, подхватывается ежечасной разверткой, как только его назначенное время просрочено больше чем на час, и выполнение закрывается как провалившееся.

## Завершено

- **Активно:** нет
- **Записывается:** время завершения и полный путь узлов, через которые прошло выполнение
- **Сообщение об ошибке:** нет

Выполнение завершается, когда достигает узла `stop`, когда выход, который оно берёт, ни к чему не подключён, или когда ответ отменяет задержку, настроенную продолжать только если ответа не было. Выполнение, заканчивающееся на узле `stop`, несёт запись "поток остановлен" как последний записанный шаг, что отличает намеренное завершение от ветки, к которой ничего не было подключено.

Завершение — это не вердикт о том, сделала ли кампания то, что вы хотели: выполнение, которое не совпало ни с одним ключевым словом и вышло через неподключённый выход No Match, — это завершённое выполнение.

## Провалено

- **Активно:** нет
- **Записывается:** сообщение об ошибке и узел, на котором выполнение остановилось
- **Повторяется:** запланированное возобновление после задержки, до трёх раз; больше ничего

Выполнение проваливается четырьмя способами: узел посещён повторно, узел-действие вызывает ошибку и зависшее выполнение подхватывается разверткой, ожидающее условие проходит 7 дней без ответа, или запланированное возобновление так и не запускается.

Зависшее выполнение — активное, с ошибкой на последнем посещённом узле — закрывается в течение часа, когда у него ещё остаётся невыполненный запланированный шаг, и после 7 дней бездействия, когда его нет. До этого момента панель показывает его как активное, так что сообщение об ошибке на активном выполнении — это сигнал, что выполнение на практике завершено.

## Что записывает провал

| Записывается | Где вы это видите |
|---|---|
| Текст ошибки из провалившегося вызова — отклонённое ЛС, комментарий, которого больше не существует, отозванный токен страницы | На выполнении, и за узлом, который её вызвал, в пути |
| Узел, на котором остановилось выполнение | Маркер текущего узла в оверлее холста |
| Путь, пройденный до этого узла | Подсветка посещённых узлов на версии графа, к которой было прикреплено выполнение |
| Причина, по которой развёртка закрыла выполнение | На выполнении: нет ответа за 7 дней, или запланированный шаг, который не запустился |

Повторы узкие. Запланированное возобновление после `delay` пытается запуститься до трёх раз, с расширяющимся интервалом, начинающимся с пяти секунд, и выполнение помечается провалившимся после третьей попытки. Действие, провалившееся, пока выполнение проходило по графу, не повторяется, и ни одно выполнение не перезапускается с начала.

Человек, чьё выполнение провалилось, не исключается из кампании. Правило «одно выполнение на человека» считает только выполнения, которые всё ещё идут, так что следующее совпадающее событие от него запускает новое.

## Примечания

- Каждое выполнение прикреплено к версии графа, на которой оно началось. Сохранение кампании в середине выполнения оставляет это выполнение на его собственной версии, и панель воспроизводит его относительно версии, которую он использовал.
- Тестовые выполнения проходят весь граф, не обращаясь к Facebook или Instagram и не меняя теги. Узел `delay` завершает тестовое выполнение, а не планирует его, записывая задержку как пропущенную.
- Панель перечисляет 20 последних выполнений кампании, сначала новые, с тестовыми выполнениями, помеченными как тесты, и не обновляется сама — обновите её, чтобы увидеть, как далеко продвинулось выполнение.

## Связанное

- [События триггеров](/ru/reference/trigger-events) — какие события запускают выполнение, а какие игнорируются.
- [Тест и отладка кампании](/ru/guides/test-and-debug-campaigns) — чтение панели выполнения, когда кампания сделала не то, что вы ожидали.
- [Типы узлов](/ru/reference/node-types) — настройка, стоящая за `wait_for_reply`, `delay_seconds` и `only_if_no_reply`.
