Как в Битрикс24 (облачная версия) сохранить данные в блокчейне (HightBlock)?

Как можно сохранить в HighLoad блоке данные о каждом изменении элемента CRM (Лид, Сделка, Компания) в Битрикс24, включая ENTITY_ID, ELEMENT_ID и CHANGE_LOG, используя созданное событие?
  • 6 марта 2024 г. 12:08
Ответы на вопрос 2
Для сохранения данных в блокчейне HighLoad в Битрикс24 (облачная версия) необходимо создать соответствующий обработчик событий, который будет отслеживать изменения элементов CRM (Лида, Сделки, Компании) и сохранять информацию в блокчейне.

Шаги для сохранения данных в HighLoad блоке с использованием созданного события:

1. Создайте событие, которое будет срабатывать при изменении элементов CRM. Например, можно использовать событие "OnAfterCrmLeadUpdate", "OnAfterCrmDealUpdate", "OnAfterCrmCompanyUpdate".

2. Создайте соответствующий обработчик событий, который будет получать информацию об изменениях (ENTITY_ID, ELEMENT_ID, CHANGE_LOG) и сохранять ее в блокчейн HighLoad.

3. В обработчике событий необходимо получить данные об изменении элемента (например, используя объект $event), сформировать необходимую информацию (ENTITY_ID, ELEMENT_ID, CHANGE_LOG) и отправить ее на сервер блокчейна HighLoad.

4. На сервере блокчейна HighLoad необходимо создать соответствующие сервисы или API для приема и сохранения данных о изменениях элементов CRM.

5. После сохранения данных в блокчейне HighLoad можно реализовать дополнительные функции, например, аналитику изменений, отслеживание истории изменений и прочее.

Обратите внимание, что для интеграции блокчейна HighLoad с Битрикс24 необходимо иметь соответствующие навыки программирования и доступ к настройкам системы.
По хорошему это всё должно быть в классе и на d7, но развивая ваш пример вот. 

Быстрая реализация через говнокод =)

AddEventHandler("crm", "OnAfterCrmLeadUpdate", "saveLeadEventToHlBlock");
AddEventHandler("crm", "OnAfterCrmDealUpdate", "saveDealEventToHlBlock");
AddEventHandler("crm", "OnAfterCrmContactUpdate", "saveContactEventToHlBlock");

function saveLeadEventToHlBlock(&$arFields){
         saveChangeCrmEntity('CRM_LEAD',  $arFields);
}

function saveDealEventToHlBlock(&$arFields){
         saveChangeCrmEntity('CRM_DEAL',  $arFields);
}

function saveContactEventToHlBlock(&$arFields){
         saveChangeCrmEntity('CRM_CONTACT',  $arFields);
}


function saveChangeCrmEntity(string $entityType,  array $fields)
{
    global $USER;
    $hlbl = 2; 
    $hlblock = HL\HighloadBlockTable::getById($hlbl)->fetch();
    $entity = HL\HighloadBlockTable::compileEntity($hlblock);
    $entity_data_class = $entity->getDataClass();

    $data = array(
        "UF_USER_ID" => $USER->GetID(),
        "UF_ENTITY_ID" =>  $entityType,
        "UF_ELEMENT_ID" =>  $fields['ID'],
        "UF_CHANGE_LOG" => \Bitrix\Main\Web\Json::encode($fields),
        "UF_DATE" => date("d.m.Y H:i:s")
    );

    $result = $entity_data_class::add($data);
}
Похожие вопросы