Найти в Дзене

Как узнать предыдущий статус сделки в Битрикс24

Это решение для коробочной версии Б24. Можно получить все изменения любой сущности, если немного скорректировать код. В своем случае я использовал для получения предыдущего статуса сделки. Кода взял здесь https://dev.1c-bitrix.ru/rest_help/crm/stagehistory.php.

Сначала я добавил в сделку строковое поле "Предыдущая стадия", куда буду в дальнейшем прописывать название предыдущий стадии. Для удобства выделил под такие служебные поля соответсвующий раздел, чтобы потом можно было скрыть от обычных пользователей.

Далее создал шаблон БП с параметрами запуска при создании и изменении сделки.

Основные параметры шаблона БП
Основные параметры шаблона БП

Добавил строковую переменную stage_old.

Переменные
Переменные

Перетащил в БП элемент PHP-код и прописал следующий код.

use Bitrix\Crm\DealTable;
use Bitrix\Crm\EventTable;
use Bitrix\Crm\EventRelationsTable;
if (\CModule::IncludeModule('crm')) {
$events = EventRelationsTable::getList([
'filter' => ['ENTITY_TYPE' => 'DEAL', 'ENTITY_ID' => '{{ID}}', 'CRM_EVENT_RELATIONS_EVENT_BY_EVENT_TYPE' => 1,],
'select' => ['*', 'EVENT_BY',],
'order' => ['CRM_EVENT_RELATIONS_EVENT_BY_DATE_CREATE' => 'DESC',],
])->fetchAll();

if (isset($events[0])) {
$this->SetVariable('stage_old', $events[0]['CRM_EVENT_RELATIONS_EVENT_BY_EVENT_TEXT_1']);
}
}

Для того, чтобы не прописывать пустые значения в служебное поле, добавил условие, когда переменная не заполнена, то не производить никаких действий, если заполнена, то записать значение переменной stage_old в служебное поле "Предыдущая стадия".

Бизнес процесс
Бизнес процесс

Вот такой получился бизнес процесс. Напишите комментарий, полезная статья, помогла кому-нибудь?)