Это решение для коробочной версии Б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 в служебное поле "Предыдущая стадия".
Вот такой получился бизнес процесс. Напишите комментарий, полезная статья, помогла кому-нибудь?)