Работа с лидами и управление статусами

1. Введение

1.1 Цель главы

В этой главе мы вместе научимся реализовывать в NocoBase конвертацию сделок CRM. Через работу с лидами и управление их статусами Вы сможете повысить эффективность бизнеса и тоньше контролировать процесс продаж.

1.2 Превью результата

В предыдущей главе мы рассмотрели, как связывать данные лидов с компаниями, контактами и сделками. Теперь сосредоточимся на модуле лидов и обсудим, как вести работу с ними и управлять статусами. Сначала посмотрите на демонстрацию:

2. Структура Collection лидов

2.1 О Collection лидов

В работе с лидами поле «status» играет ключевую роль: оно отражает текущее состояние лида (не квалифицирован, новый, в работе, в подогреве, в сделке, завершено) и при этом управляет отображением и логикой формы. Ниже в табличном блоке представлена структура полей Collection лидов с подробным описанием:

Field nameОтображаемое названиеField interfaceDescription
idIdIntegerПервичный ключ
account_idaccount_idIntegerВнешний ключ ACCOUNT
contact_idcontact_idIntegerВнешний ключ CONTACT
opportunity_idopportunity_idIntegerВнешний ключ OPPORTUNITY
nameИмя лидаSingle line textИмя потенциального клиента
companyКомпанияSingle line textНазвание компании потенциального клиента
emailEmailEmailEmail-адрес потенциального клиента
phoneТелефонPhoneКонтактный телефон
statusСтатусSingle selectТекущий статус (не квалифицирован, новый, в работе, в подогреве, в сделке, завершено)
AccountКомпанияMany to oneСвязь с Collection компаний
ContactКонтактMany to oneСвязь с Collection контактов
OpportunityСделкаMany to oneСвязь с Collection сделок

3. Создание блока таблицы Leads и блока деталей

3.1 Описание

Сначала создадим блок таблицы «Leads» для отображения нужных полей. В правой части страницы настроим блок деталей: при клике на запись справа автоматически появится подробная информация. Пример настройки:

4. Настройка кнопок действий

4.1 Общее описание кнопок

Чтобы покрыть все нужды, создадим всего 11 кнопок. Каждая отображается по-разному (скрыта, активна, заблокирована) в зависимости от статуса записи (status), направляя пользователя по правильному бизнес-процессу. 20250226173632

4.2 Подробная настройка функциональных кнопок

4.2.1 Кнопка редактирования

  • Правило связности: когда status записи равен «Completed» (Завершено), кнопка автоматически блокируется, чтобы предотвратить лишние правки.

4.2.2 Кнопка «Не квалифицирован» 1 (неактивная)

  • Стиль: заголовок «Unqualified >».
  • Действие: при клике выполняется update, status записи становится «Unqualified», после успешного обновления — возврат на предыдущий уровень и вывод сообщения «Unqualified».
  • Правило связности: показывается только когда status пустой; как только у status появляется значение, кнопка автоматически скрывается.

4.2.3 Кнопка «Не квалифицирован» 2 (активная)

  • Стиль: тоже «Unqualified >».
  • Действие: обновляет status записи на «Unqualified».
  • Правило связности: при пустом status кнопка скрыта; при «Completed» — заблокирована.

4.2.4 Кнопка «Новый лид» 1 (неактивная)

  • Стиль: заголовок «New >».
  • Действие: при клике обновляет запись, выставляя status в «New», после чего показывается сообщение «New».
  • Правило связности: если status уже находится в одном из состояний «New», «Working», «Nurturing» или «Completed», кнопка скрывается.

4.2.5 Кнопка «Новый лид» 2 (активная)

  • Стиль: заголовок «New >».
  • Действие: тоже обновляет status на «New».
  • Правило связности: при status «Unqualified» или пустом — скрыта; при «Completed» — заблокирована.

4.2.6 Кнопка «В работе» (неактивная)

  • Стиль: заголовок «Working >».
  • Действие: при клике status обновляется на «Working», выводится сообщение «Working».
  • Правило связности: если status уже «Working», «Nurturing» или «Completed», кнопка скрыта.

4.2.7 Кнопка «В работе» (активная)

  • Стиль: заголовок «Working >».
  • Действие: обновляет status на «Working».
  • Правило связности: при status «Unqualified», «New» или пустом — скрыта; при «Completed» — заблокирована.

4.2.8 Кнопка «В подогреве» (неактивная)

  • Стиль: заголовок «Nurturing >».
  • Действие: при клике status обновляется на «Nurturing», выводится сообщение «Nurturing».
  • Правило связности: если status уже «Nurturing» или «Completed», кнопка скрыта.

4.2.9 Кнопка «В подогреве» (активная)

  • Стиль: заголовок «Nurturing >».
  • Действие: обновляет status на «Nurturing».
  • Правило связности: при status «Unqualified», «New», «Working» или пустом — скрыта; при «Completed» — заблокирована.

4.2.10 Кнопка «Конвертировать»

  • Стиль: заголовок «transfer», открывает модальное окно.
  • Действие: основная функция — выполнить операцию переноса записи. После обновления появляется интерфейс с шторкой, табами и формой для удобной работы.
  • Правило связности: когда status записи равен «Completed», кнопка скрыта во избежание повторного переноса.

4.2.11 Кнопка «Конвертация выполнена» (активная)

  • Стиль: заголовок «transfered», тоже открывает модальное окно.
  • Действие: только для просмотра информации после конвертации, без возможности редактировать.
  • Правило связности: показывается только при status «Completed»; при других статусах («Unqualified», «New», «Working», «Nurturing» или пустом) — скрыта.

4.3 Итог по настройке кнопок

  • Для каждой функции есть отдельные стили кнопок в неактивном и активном состоянии.
  • Через правила связности динамически управляем видимостью (скрытие/блокировка) кнопок по status записи, направляя продавца по правильному рабочему процессу.

5. Правила связности формы

5.1 Правило 1: показывать только имя

  • Когда запись не подтверждена или status пустой, показывается только имя.

5.2 Правило 2: оптимизация отображения для статуса «Новый лид»

  • При status «Новый лид» страница скрывает название компании и показывает контактные данные.

6. Правила Markdown и синтаксис Handlebars

6.1 Динамические тексты

На странице с помощью синтаксиса Handlebars выводим разные подсказки в зависимости от статуса. Примеры кода:

Когда статус «Не квалифицирован»:

{{#if (eq $nRecord.status "Не квалифицирован")}}
**Отслеживайте информацию по неквалифицированным лидам.**  
Если лид не интересуется продуктом или ушёл из своей компании, он может быть неквалифицированным.  
- Фиксируйте уроки на будущее  
- Сохраняйте детали взаимодействия и контакты  
{{/if}}

Когда статус «Новый лид»:

{{#if (eq $nRecord.status "Новый лид")}}
**Определите, какие продукты или услуги нужны для этой возможности.**  
- Соберите кейсы, рекомендации или конкурентный анализ  
- Подтвердите ключевых стейкхолдеров  
- Определите доступные ресурсы  
{{/if}}

Когда статус «В работе»:

{{#if (eq $nRecord.status "В работе")}}
**Передайте решение стейкхолдерам.**  
- Донесите ценность решения  
- Согласуйте сроки и бюджет  
- Совместно с клиентом спланируйте, когда и как заключить сделку  
{{/if}}

Когда статус «В подогреве»:

{{#if (eq $nRecord.status "В подогреве")}}
**Согласуйте план внедрения проекта.**  
- При необходимости заключите договорённости  
- Соблюдайте внутренние правила скидок  
- Получите подписанный контракт  
{{/if}}

Когда статус «Конвертация выполнена»:

{{#if (eq $nRecord.status "Конвертация выполнена")}}
**Подтвердите план реализации проекта и финальные шаги.**  
- Убедитесь, что все оставшиеся договорённости и подписи на месте  
- Соблюдайте внутреннюю политику скидок  
- Убедитесь, что контракт подписан и реализация идёт по плану  
{{/if}}

7. Отображение связанных объектов после конвертации и переходов по ссылкам

7.1 О связанных объектах

После конвертации мы хотим отображать связанные объекты (компанию, контакт, сделку) и ссылки для перехода к их детальным страницам. Внимание: в других всплывающих окнах или страницах последняя часть формата ссылки (число после filterbytk) — это ID текущего объекта. Например:

http://localhost:13000/apps/tsting/admin/w3yyu23uro0/popups/ki0wcnfruj6/filterbytk/1

7.2 Генерация ссылок через Handlebars

Для компании:

{{#if (eq $nRecord.status "Завершено")}}
**Account:**
[{{$nRecord.account.name}}](http://localhost:13000/apps/tsting/admin/w3yyu23uro0/popups/ki0wcnfruj6/filterbytk/{{$nRecord.account_id}})
{{/if}}

Для контакта:

{{#if (eq $nRecord.status "Завершено")}}
**Contact:**
[{{$nRecord.contact.name}}](http://localhost:13000/apps/tsting/admin/1oqybfwrocb/popups/8bbsqy5bbpl/filterbytk/{{$nRecord.contact_id}})
{{/if}}

Для сделки:

{{#if (eq $nRecord.status "Завершено")}}
**Opportunity:**
[{{$nRecord.opportunity.name}}](http://localhost:13000/apps/tsting/admin/si0io9rt6q6/popups/yyx8uflsowr/filterbytk/{{$nRecord.opportunity_id}})
{{/if}}

8. Скрытие связанных объектов с сохранением значений

Чтобы после конвертации связанные данные корректно отображались, у полей «Компания», «Контакт» и «Сделка» нужно установить состояние «Скрыть (сохранить значение)». Тогда поля не будут отображаться в форме, но их значения будут записаны и переданы.

9. Защита от изменения статуса после конвертации

Чтобы случайно не поменять статус после конвертации, ко всем кнопкам добавляем условие: при статусе «Завершено» все кнопки блокируются.

10. Заключение

После выполнения всех шагов функциональность работы с лидами и их конвертации готова! Через эту главу мы постарались наглядно показать, как в NocoBase реализуется связное изменение состояний и формы. Удачной работы!