← К заметкам

Заметки

Почему вебхук не может запретить уже выполненную смену стадии

Требование звучит просто: нельзя закрыть сделку, пока у неё нет задачи или дела. Но если проверка запускается внешним обработчиком ONCRMDEALUPDATE, сохранение уже произошло.

Ответ обработчика с ошибкой не превращает REST-событие в проверку перед записью. Обратный вызов crm.item.update может вернуть сделку на прежнюю стадию, однако это будет ещё одно изменение. Между двумя изменениями успевает существовать закрытая сделка, и связанная автоматизация может отреагировать на неё.

Как выбрать реализацию

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

Если нужен строгий запрет, его следует закладывать до сохранения. В коробке у операций CRM есть действия Operation::ACTION_BEFORE_SAVE и проверка результата операции. Проверка должна участвовать в том пути записи, которым действительно пользуется карточка или интеграция.

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

Документация: ONCRMDEALUPDATE; Операции CRM.