> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yume.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Воронки и этапы

> Каркас модуля продаж: воронки и их этапы (обычный / успех / отказ), автоматический стартовый набор этапов, запрет ручного создания и удаления системных этапов, автопересчёт порядка при сохранении, мягкое удаление воронки и этапа с запретом удаления непустого этапа и CRUD-адреса.

Полный перечень полей — в [глоссарии](/ru/logic/sales/funnels-stages-glossary).

Эта страница описывает, как устроены **воронки продаж** и их **этапы** — базовый каркас, поверх которого работают лиды, задачи и автоматические триггеры остального модуля продаж.

## Что это такое

**Воронка продаж** — это именованный набор этапов, через которые последовательно проходит лид: от первого обращения до успешного завершения сделки или отказа. **Этап воронки** — отдельная позиция внутри воронки; у каждого лида в любой момент есть ровно один текущий этап.

Обе сущности принадлежат конкретной компании — данные одной компании никогда не видны другой.

<Info>
  Воронку не нужно собирать вручную с нуля. При создании воронки система сама наполняет её готовым стартовым набором этапов, включая два обязательных системных этапа. Дальше набор можно дополнять и переупорядочивать.
</Info>

## Модель данных

### Воронка продаж

| Поле                            | Тип              | Назначение                                                                   |
| ------------------------------- | ---------------- | ---------------------------------------------------------------------------- |
| Название                        | текст            | Отображаемое имя воронки                                                     |
| Кем создана                     | связь            | Пользователь-автор (учётная запись из общей/глобальной модели пользователей) |
| Ответственные пользователи      | список чисел     | Идентификаторы пользователей, привязанных к воронке                          |
| Доп. данные                     | JSON             | Произвольные дополнительные данные                                           |
| Этапы                           | связь (обратная) | Набор этапов, принадлежащих этой воронке                                     |
| Отключение                      | связь 1:1        | Признак мягкого удаления; пока пусто — воронка активна                       |
| Компания                        | связь            | Владелец записи                                                              |
| Дата создания / Дата обновления | дата/время       | Заполняются автоматически                                                    |

### Этап воронки

| Поле                            | Тип              | Назначение                                                  |
| ------------------------------- | ---------------- | ----------------------------------------------------------- |
| Название                        | текст            | Отображаемое имя этапа                                      |
| Воронка                         | связь            | Воронка, которой принадлежит этап                           |
| Тип этапа                       | перечисление     | Обычный / Успешно завершён / Нереализован (отказ)           |
| Цвет                            | текст (HEX)      | Цвет метки этапа в интерфейсе, по умолчанию белый (#ffffff) |
| Порядок                         | число            | Позиция этапа при сортировке внутри воронки, по умолчанию 0 |
| Ответственные пользователи      | список чисел     | Идентификаторы пользователей, привязанных к этапу           |
| Доп. данные                     | JSON             | Произвольные дополнительные данные                          |
| Отключение                      | связь 1:1        | Признак мягкого удаления; пока пусто — этап активен         |
| Лиды                            | связь (обратная) | Лиды, находящиеся на этом этапе                             |
| Компания                        | связь            | Владелец записи                                             |
| Дата создания / Дата обновления | дата/время       | Заполняются автоматически                                   |

### Типы этапов

Тип этапа определяет его роль:

* **Обычный** — рабочий этап воронки, который можно свободно создавать и редактировать, а также удалять — если на нём не осталось лидов.
* **Успешно завершён** — системный этап, означающий выигранную сделку.
* **Нереализован (отказ)** — системный этап, означающий проигранную сделку.

<Warning>
  Два системных типа — «Успешно завершён» и «Нереализован (отказ)» — создаются только автоматически. Их **нельзя создать вручную** и **нельзя удалить**. Попытка сделать это через интерфейс отклоняется с ошибкой доступа. Так гарантируется, что у каждой воронки всегда есть куда «закрыть» сделку в плюс и в минус.
</Warning>

## Логика и побочные эффекты

### Автозаполнение этапов при создании воронки

Создание воронки и наполнение её этапами выполняется одной атомарной операцией: либо создаётся воронка вместе со всеми стартовыми этапами, либо не создаётся ничего.

Сразу после создания воронка получает пять этапов:

| Название            | Тип                  | Начальный порядок | Цвет                 |
| ------------------- | -------------------- | ----------------- | -------------------- |
| Успешно завершенные | Успешно завершён     | 0                 | белый (по умолчанию) |
| Нереализованные     | Нереализован (отказ) | 1                 | белый (по умолчанию) |
| Новая заявка        | Обычный              | 2                 | синий (#1890FF)      |
| В работе            | Обычный              | 3                 | розовый (#F759AB)    |
| Уточнение деталей   | Обычный              | 4                 | фиолетовый (#A165FD) |

<Note>
  Названия и цвета стартовых обычных этапов — это лишь заготовка. Их можно переименовывать, перекрашивать, удалять (предварительно перенеся лиды) и дополнять новыми. Неизменны только сам факт наличия двух системных этапов и запрет на их ручное создание/удаление.
</Note>

### Порядок этапов и его автоматический пересчёт

Позиция этапа внутри воронки хранится в поле «Порядок». При каждом сохранении этапа автоматически срабатывает пересортировка: все **остальные активные** этапы **той же воронки**, у которых значение порядка больше или равно порядку сохранённого этапа, сдвигаются на одну позицию вверх (их значение порядка увеличивается на 1). Сам сохранённый этап и этапы, помеченные как удалённые, при этом не затрагиваются.

Смысл механизма — «раздвинуть» соседей и освободить место для этапа на нужной позиции. Например, если поставить этап на позицию 2, все этапы, стоявшие на позиции 2 и дальше, автоматически уступят место, съехав на позицию 3 и далее.

<Warning>
  Пересчёт запускается при **любом** сохранении этапа, а не только при явном изменении порядка. Даже редактирование одного лишь названия или цвета сдвигает соседние этапы вверх по значению порядка. Относительная последовательность этапов при этом сохраняется, но числовые значения порядка со временем перестают быть подряд идущими (в них появляются разрывы и они растут). Для бизнес-пользователя это обычно незаметно, потому что список этапов всё равно упорядочивается по типу и относительной позиции.
</Warning>

### Как этапы выводятся в списке

Список этапов воронки сортируется не только по полю «Порядок». Сначала идут все **обычные** этапы, затем этап **успешного завершения**, и в самом конце — этап **отказа**. Внутри каждой из этих групп этапы упорядочены по значению порядка, а при равенстве — от более новых к более старым по дате создания.

Поэтому системные этапы всегда показываются в хвосте списка, независимо от того, какие у них значения порядка (напомним, при автозаполнении им достаются самые маленькие значения — 0 и 1).

### Добавление нового этапа вручную

При ручном добавлении этапа:

1. Если запрошен один из системных типов (успех или отказ) — запрос отклоняется с ошибкой доступа.
2. Проверяется, что воронка существует; иначе возвращается ошибка валидации.
3. Новому этапу присваивается порядок, равный максимальному текущему значению порядка среди активных этапов воронки плюс один — то есть этап добавляется **в конец**. Если активных этапов нет, используется значение 1.

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

<Note>
  Тип этапа задаётся только в момент создания и в дальнейшем не редактируется — при обновлении этапа поля «Воронка», «Тип этапа» и «Дата создания» доступны только для чтения. Перенести обычный этап в разряд системного (или наоборот) через редактирование нельзя.
</Note>

### Удаление воронки и этапа

И воронка, и этап удаляются **мягко**: запись не стирается из базы, а получает отдельную отметку отключения (с указанием, кто и каким способом удалил). После этого воронка или этап перестают попадать в списки и выборки активных записей, но их данные сохраняются.

Для этапа к этому добавляется главное правило: **непустой этап удалить нельзя**.

<Steps>
  <Step title="Этап с лидами — отказ">
    Если на этапе стоит хотя бы один лид, удаление отклоняется. В ответе приходит понятная ошибка «Необходимо переместить лиды» вместе с **количеством лидов**, которые нужно перенести, — интерфейс может показать это числом («перенесите 12 лидов»).
  </Step>

  <Step title="Пустой этап — отключение">
    Этап без лидов отключается: он уходит с доски, из списков и из выборок и больше недоступен ни на чтение, ни на изменение, ни на повторное удаление. Данные при этом сохраняются.
  </Step>

  <Step title="Системные этапы — запрет">
    Этапы «Успешно завершён» и «Нереализован (отказ)» удалить нельзя вовсе, независимо от того, есть на них лиды или нет.
  </Step>
</Steps>

<Note>
  Штатный способ освободить этап перед удалением — **массовый перенос лидов** на другой этап (см. [«Логи и массовые операции»](/ru/logic/sales/logs-bulk)). После переноса этап становится пустым, и его можно отключить.
</Note>

Лиды, задачи по лидам и история перемещений при отключении этапа не затрагиваются: удалить этап «вместе с содержимым» через интерфейс невозможно.

<Note>
  Отключённые этапы не отдаются ни в списке этапов воронки, ни при обращении к конкретному этапу по идентификатору — обращение к уже отключённому этапу отвечает «не найдено».
</Note>

## CRUD-адреса

Модуль предоставляет отдельные наборы операций для воронок и для этапов.

### Воронки

* **Список и создание.** Возвращаются только активные воронки, отсортированные по дате создания; связанные этапы подгружаются вместе с воронкой. При создании автором записи проставляется текущий пользователь, и автоматически создаётся стартовый набор этапов. Список отдаётся без постраничной разбивки.
* **Просмотр, изменение, удаление одной воронки.** Работают только с активными воронками. Удаление — мягкое (см. выше).

Доступ к операциям над воронками управляется правами на соответствующую модель — пользователю нужны отдельные разрешения на просмотр, создание, изменение и удаление.

### Этапы

* **Список и создание этапов воронки.** Возвращаются активные этапы конкретной воронки в порядке, описанном выше (сначала обычные, потом успех, потом отказ). Создание системных типов запрещено; новый этап добавляется в конец. Список отдаётся без постраничной разбивки.
* **Просмотр, изменение, удаление одного этапа.** Работают только с активными (не отключёнными) этапами. Изменение не позволяет менять воронку, тип и дату создания этапа. Удаление системных этапов запрещено; непустой обычный этап удалить нельзя, пустой — отключается (см. выше).

<Info>
  Операции над этапами требуют лишь того, чтобы пользователь был авторизован, — отдельная система прав на модель здесь не применяется (в отличие от операций над самими воронками).
</Info>

## Как это используется

Воронки и этапы — это фундамент всего модуля продаж. На них опираются:

* **Лиды**, которые всегда «стоят» на конкретном этапе конкретной воронки и перемещаются между этапами.
* **Триггеры этапов**, которые срабатывают при перемещении лида на новый этап (отправка сообщений, создание задач и заявок, смена статуса заказа, перенос лида и вызов вебхука).
* **Публичный приём заявок с сайта**: входящая заявка попадает на **первый по порядку активный обычный этап** воронки; если в воронке нет ни одного активного обычного этапа, заявка не принимается.

Именно поэтому наличие корректно настроенных этапов (и обязательных системных «успех»/«отказ») — предусловие для работы лидов и автоматизаций, описанных на других страницах этого модуля.

## Связанные страницы

<CardGroup cols={2}>
  <Card title="Глоссарий: Воронки и этапы" icon="book" href="/ru/logic/sales/funnels-stages-glossary">
    Полный перечень полей воронки и этапа с точными определениями терминов.
  </Card>

  <Card title="Продажи (воронки лидов)" icon="filter" href="/ru/logic/sales">
    Обзор всего модуля продаж и переход к остальным его разделам.
  </Card>

  <Card title="Лиды и их порядок" icon="user-plus" href="/ru/logic/sales/leads">
    Лиды воронки: связь с клиентом, заявкой и продажей, ручное упорядочивание, фильтры/поиск и создание заявки из лида.
  </Card>

  <Card title="Задачи по лидам" icon="list-check" href="/ru/logic/sales/lead-tasks">
    Задачи по лидам с дедлайном, назначением менеджера и уведомлением ответственного.
  </Card>

  <Card title="Триггеры и автоматизация этапов" icon="bolt" href="/ru/logic/sales/triggers">
    Триггеры этапов и их исполнение при смене этапа лида: сообщения, задачи, заявки, смена статуса заказа, перенос и вебхук.
  </Card>

  <Card title="Логи и массовые операции" icon="layer-group" href="/ru/logic/sales/logs-bulk">
    История смены этапов лида и массовые действия над лидами этапа: перенос, удаление и рассылка.
  </Card>

  <Card title="Приём заявок с сайта и синхронизация Wazzup" icon="webhook" href="/ru/logic/sales/lead-intake">
    Приём заявок с сайта (создание клиента и лида) и фоновая синхронизация сделок при изменениях лида.
  </Card>
</CardGroup>
