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 сделки в системе.
));