Событие (обработчик) добавление записей в TimeLine сущности CRM Битрикс24. Другие примеры работы со сделкой.

5055
Рассмотрим пример обновления даты последней активности в сделки, если появился комментарий,  воспользуемся методом OnAfterAdd, класса Timeline 
AddEventHandler("crm", "\Bitrix\Crm\Timeline\Entity\Timeline::OnAfterAdd", "GetCommentTime");
function  GetCommentTime()
{
        global $USER_FIELD_MANAGER, $DB;
        $application = \Bitrix\Main\Application::getInstance();
        $parameters = $event->getParameters();
        $fields = $parameters['fields'];
        $ownerID = $fields['ASSOCIATED_ENTITY_ID'];
        $ownerTypeID = $fields['ASSOCIATED_ENTITY_TYPE_ID'];
        $typeId = $fields['TYPE_ID'];
        if ((int)$ownerTypeID === \CCrmOwnerType::Deal &&
            in_array(
                $typeId,
                [
                    TimelineType::COMMENT,
                    TimelineType::MODIFICATION,
                    TimelineType::CREATION,
                ]
            )) {
            $USER_FIELD_MANAGER->Update(
                'CRM_DEAL',
                $ownerID,
                [
                    'UF_LAST_ACTIVITY_DATE' => date($DB->DateFormatToPHP(\CSite::GetDateFormat('SHORT'))),
                ]
            );
        }
}

Рассмотрим пример кода, обновление сделки (обновим дополнительное текстовое свойство сделки и запишем туда полученный ранее комментарий). Для этого воспользуемся методом Update:
 
$CCrmEntity = new CCrmDeal(false); // создадим экземпляр класса сделки
$arFields = array(
    'UF_CRM_ID' => $commentText // UF_CRM_ID - Код свойства,  $commentText - текст комментария
);
$res = $CCrmEntity->Update(
     $DealID,
     $arFields,
     true,
     true,
     ['DISABLE_USER_FIELD_CHECK' => true]
);

Рассмотрим еще один пример, добавления комментария в Timeline. Для этого воспользуемся классом CommentEntry и методом Create
 
\Bitrix\Main\Loader::includeModule('crm'); // подключим модуль crm

global $USER;
\Bitrix\Crm\Timeline\CommentEntry::create( array( 'TEXT' => 'текст который отобразится в Timeline', 'SETTINGS' => array('HAS_FILES' => 'N'), //cодержит ли файл комментарий 'AUTHOR_ID' => $USER->GetID(), //ID пользователя, от которого будет добавлен комментарий 'BINDINGS' => array(array('ENTITY_TYPE_ID' => 2, 'ENTITY_ID' => 999)) // привязка к сущности CRM: ENTITY_TYPE_ID - тип сущности CRM (2 - Сделка), 'ENTITY_ID' - ID сделки в системе. ));


Яндекс.Метрика