Какой метод используется в вебхуке Bitrix24 для отслеживания изменений стадий сделок?

В облачной версии Битрикс я создал поля для фиксирования дат создания и изменения стадий сделок. Количество полей соответствует количеству стадий. Однако у меня возникла проблема: я не могу зафиксировать даты предыдущих стадий для уже существующих сделок, так как поля-фиксаторы были созданы позднее. В каждой сделке есть история изменения стадий в комментариях таймлайна. Я хотел бы узнать, какой метод вебхука мне следует использовать, чтобы извлекать даты изменений стадий сделок из таймлайна и записывать их в соответствующие поля для уже существующих сделок. Возможно ли это сделать?
  • 15 апреля 2025 г. 13:45
Ответы на вопрос 2
Для отслеживания изменений стадий сделок в Bitrix24 и извлечения информации о датах изменений, вам нужно использовать метод API `crm.deal.get` в сочетании с методом `crm.timeline.list`. 

1. **Получение списка сделок**: Сначала получите список сделок, которые вас интересуют, используя метод `crm.deal.list`. Убедитесь, что вы имеете доступ к нужным сделкам.

2. **Получение истории изменений staged**: Для каждой сделки, у которой вы хотите зафиксировать даты изменений стадий, используйте метод `crm.timeline.list`. Этот метод позволяет получить историю изменений для сделок, включая изменения стадий. Обратите внимание, что вам нужно будет указать ID сделки.

Пример вызова должен выглядеть следующим образом:

```php
$dealId = 'XXX';  // Замените XXX на ID вашей сделки
$timelineItems = restApiCall('crm.timeline.list', ['entityId' => $dealId]);
```

3. **Обработка полученных данных**: Извлеките нужные данные из полученного ответа. В частности, вам нужно будет найти записи о изменении стадий, которые обычно имеют тип `CRM_ACTIVITY_TYPE_DEAL_STAGE`.

4. **Запись данных в пользовательские поля**: После того как вы извлекли даты изменений стадий, вы можете использовать метод `crm.deal.update` для обновления пользовательских полей в сделке. Убедитесь, что пользовательские поля обновляются с правильными значениями.

Пример обновления сделки:

```php
$updateResult = restApiCall('crm.deal.update', [
    'id' => $dealId,
    'fields' => [
        'UF_DATE_STAGE_1' => $dateStage1, // Здесь подставьте нужные даты
        'UF_DATE_STAGE_2' => $dateStage2, 
        // И так далее для других стадий...
    ]
]);
```

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

Важно помнить, что с помощью API Bitrix24 есть ограничения по количеству запросов в минуту, так что лучше сделать паузу между запросами, если будет нужно обрабатывать много сделок.

Таким образом, процесс заключается в получении историй изменений сделок и их использования для заполнения пользовательских полей с датами по соответствующим стадиям.
Можно использовать исходящий и входящий вебхуки. 
Триггер исходящего вебхука - ONCRMDEALUPDATE.
В ответе придет идентификатор измененной сделки.
При срабатывании триггера делаете запрос на получение данных сделки crm.deal.get.
Дальше пишете свой обработчик по проверке нахождения сделки на определенной стадии и если поле, куда пишите дату изменения стадии пустое, то пишете в него время изменения стадии с помощью метода crm.deal.update.
это вариант 1 - сложный.

Можно попробовать вариант полегче.
Только входящий вебхук, метод crm.stagehistory.list.
Файл можно запускать на исполнение по cron с нужными интервалами

пс
Выше пишут про БП
кстати, можно и через БП попробовать сделать - бп на добавление/изменение сделки.
И также по условиям проверять поля и заполнять их - в облаке такое можно сделать
Похожие вопросы