Актуализируем сделки без задач по расписанию в amoCRM


Описание кейса

В данной статье рассмотрим следующий кейс:

У клиента в воронке присутствует этап «В работе». На данном этапе не должно находится сделок, у которых нет открытых задач, иначе будет считаться, что над сделкой никто не работает. Создадим процесс, который будет запускаться в 6 часов утра, в начале рабочей смены.

Процесс будет делиться на две части:

  • Процесс, который ищет сделки без активной задачи на этапе «в работе».
  • Если такие сделки есть — отправлять их на подпроцесс, в котором на сделку будет ставится задача.

Разделение логики процесса нужно для того, чтобы хватило времени на отработку процесса, так как сделок может быть много и MoreKit может не успеть найти весь массив сделок и обработать их в одном процессе, так как у тарифов есть ограничения на обработку по времени.

Создание процесса

Процесс «По времени»

Так как менеджеры работают с восьми утра, в данном примере будем запускать процесс однократно перед выходом менеджеров на смену, а именно в 6 утра.
Создаем процесс с типом «По времени».

Данный тип процесса позволяет гибко настроить временной интервал, по которому будет инициирован запуск процесса.
Настроим время на 06:00

Создание подпроцесса

Теперь создадим подпроцесс, в котором будут обновляться сделки. Для этого создаем еще один процесс с типом «Подпроцесс» и указываем его название. Это необходимо для того, чтобы при размещении блока «Запустить подпроцесс» в основном процессе появилась выборка по подпроцессам, созданным в проекте.

Выстраиваем логику

Логика процесса «По расписанию»

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

  • В блоке «Поиск сделок» для выборки сделок с данными условиями использованы фильтры. Фильтр по статусу и фильтр «Ближайшая задача». Если у сделки нет активных задач, данная переменная не будет отсутствовать в сделке. Статус указываем согласно кейсу — «В работе».

  • В блоке «Запуск подпроцесса» мы указываем наш созданный подпроцесс. В качестве данных передаем всю информацию о сделке, ссылаясь на блок {{#28}}

Логика подпроцесса

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

Проверка запуска подпроцесса

Настройка выполнена и мы можем протестировать процесс. В данном примере на этапе в «Работе» будет находиться 4 сделки, но только у двух из них будут активные задачи. Процесс в MoreKit сработает, как только подойдет время, выставленное в процессе «По времени».

Заходим в события в процессе «По времени», после срабатывания процесса там должно появиться событие.

Как видим, блок поиска сделок в результате отработки нашел две сделки и направил их на подпроцесс. Это видно, так как запуск подпроцесса выполнился два раза. Теперь необходимо посмотреть события в нашем подпроцессе, чтобы убедиться в отсутствии ошибок.

Проверка постановки задачи

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

Чтобы перейти к данным сделкам и проверить, что задача там действительно есть, можно кликнуть по ID сделки прямо из лога, тогда MoreKit выполнит перенаправление на страницу amoCRM со сделкой из лога:

После перехода в сделку видим, что задача создалась.

Подведем итог

В данном кейсе мы создали процесс в MoreKit с типом «По расписанию». Настроенный процесс ищет сделку на определенном этапе воронки с условием, что у сделки отсутствуют активные задачи. Найденные сделки передаются в подпроцесс «Обновление сделок», который ставит задачу на сделку.