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

Шаг 1: Создайте пользовательские поля

Для каждого этапа вам нужны два типа полей:
  • Поля «Дата и время»: фиксируют, когда сделка вошла на каждый этап
  • Числовые поля: хранят, сколько дней сделка провела на каждом этапе

Создайте поля «Последний вход»

  1. Перейдите в Настройки → Модель данных → Сделки
  2. Для каждого этапа нажмите + Добавить поле и настройте:
    • Имя: Последний вход в [название этапа] (например, «Последний вход — Новый», «Последний вход — Квалификация»)
    • Тип: Дата и время
    • Описание: Метка времени, когда сделка вошла на этот этап
  3. Нажмите Сохранить
Создайте эти поля:
  • Последний вход — Новый
  • Последний вход — Квалификация
  • Последний вход — Встреча
  • Последний вход — Предложение
  • Последний вход — Переговоры
  • Последний вход — Закрыта — выиграна
  • Последний вход — Закрыта — проиграна

Создайте поля «Дней на этапе»

  1. Для каждого этапа нажмите + Добавить поле и настройте:
    • Имя: Дней на [название этапа] (например, «Дней на Новом», «Дней на Квалификации»)
    • Тип: Число
    • Описание: Количество дней, проведённых на этом этапе
  2. Нажмите Сохранить
Создайте эти поля:
  • Дней на Новом
  • Дней на Квалификации
  • Дней на Встрече
  • Дней на Предложении
  • Дней на Переговорах
Поля «Дней на этапе» не нужны для этапов «Закрыта — выиграна» и «Закрыта — проиграна», так как это финальные этапы.

Необязательно: сделайте поля только для чтения

Если вы не хотите, чтобы пользователи вручную редактировали эти вычисляемые поля:
  1. Перейдите в Настройки → Роли
  2. Выберите роль для настройки
  3. Найдите объект «Сделки»
  4. Сделайте поля «Последний вход» и «Дней на этапе» доступными только для чтения

Шаг 2: Создайте рабочий процесс

Один рабочий процесс решает обе задачи:
  • Записывает метку времени при входе на новый этап
  • Вычисляет количество дней, проведённых на предыдущем этапе

Создайте рабочий процесс

  1. Перейдите в Рабочие процессы
  2. Нажмите + Новый рабочий процесс
  3. Назовите его «Отслеживание времени по этапам»

Настройте триггер

  1. Добавьте триггер Record Updated
  2. Выберите Сделки как объект
  3. Фильтр: обновлено поле Этап

Добавьте ветви для каждого этапа

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

Ветвь 1: Этап = Новый (первый этап) Поскольку это первый этап, мы записываем только метку входа — предыдущего этапа для расчёта нет.
  1. Добавьте узел Filter: Этап = Новый
  2. Добавьте действие Code:
export const main = async (): Promise<object> => {
  return { now: new Date().toISOString() };
};
  1. Добавьте действие Update Record:
    • Запись: инициировавшая триггер сделка
    • Поле: Последний вход — Новый
    • Значение: now из узла Code

Ветвь 2: Этап = Квалификация При переходе к «Квалификации» запишите время входа И рассчитайте дни, проведённые на «Новом».
  1. Добавьте узел Filter: Этап = Квалификация
  2. Добавьте действие Code:
export const main = async (params: {
  lastEnteredPreviousStage: Date;
}): Promise<object> => {
  const { lastEnteredPreviousStage } = params;

  const now = new Date();
  const entryDate = new Date(lastEnteredPreviousStage);
  const diffTime = Math.abs(now.getTime() - entryDate.getTime());
  const daysInPreviousStage = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  return {
    now: now.toISOString(),
    daysInPreviousStage: daysInPreviousStage
  };
};
  1. Настройте вход узла Code: сопоставьте lastEnteredPreviousStage с полем Последний вход — Новый
  2. Добавьте действие Update Record:
    • Запись: инициировавшая триггер сделка
    • Поля для обновления:
      • Последний вход — Квалификация = now
      • Дней на Новом = daysInPreviousStage

Ветвь 3: Этап = Встреча При переходе к «Встрече» запишите время входа И рассчитайте дни, проведённые на «Квалификации».
  1. Добавьте узел Filter: Этап = Встреча
  2. Добавьте действие Code:
export const main = async (params: {
  lastEnteredPreviousStage: Date;
}): Promise<object> => {
  const { lastEnteredPreviousStage } = params;

  const now = new Date();
  const entryDate = new Date(lastEnteredPreviousStage);
  const diffTime = Math.abs(now.getTime() - entryDate.getTime());
  const daysInPreviousStage = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  return {
    now: now.toISOString(),
    daysInPreviousStage: daysInPreviousStage
  };
};
  1. Настройте вход узла Code: сопоставьте lastEnteredPreviousStage с полем Последний вход — Квалификация
  2. Добавьте действие Update Record:
    • Запись: инициировавшая триггер сделка
    • Поля для обновления:
      • Последний вход — Встреча = now
      • Дней на Квалификации = daysInPreviousStage

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

Шаг 3: Проанализируйте время на этапе

Имея метки времени и количество дней, вы можете анализировать скорость сделок.

Создайте представление «Медленные сделки»

  1. Создайте табличное представление «Сделки»
  2. Добавьте столбцы: Название, Этап, Дней на [предыдущем этапе], Сумма
  3. Отсортируйте по полю «Дней на этапе» (по убыванию)
  4. Отфильтруйте по полю «Этап», чтобы сосредоточиться на одном этапе
Сделки вверху провели больше всего времени на предыдущем этапе.

Используйте агрегации

В канбан-представлении вашей воронки:
  1. Нажмите на число рядом с названием этапа
  2. Выберите Среднее
  3. Выберите поле «Дней на этапе»
Это покажет среднее время, которое сделки проводят на каждом этапе.

Резюме

КомпонентНазначение
Поля «Последний вход»Хранят момент входа сделки на каждый этап
Поля «Дней на этапе»Хранят количество дней, проведённых на каждом этапе
Рабочий процессЗаписывает метку времени И вычисляет дни за один проход
Представления и агрегацииАнализируйте скорость сделок и выявляйте узкие места

Связанные материалы