Полный цикл в digital

События в Сделках CRM Битрикс24

Как и у многих других сущностей платформы у Сделок есть события, позволяющие узнавать о каких-либо событиях и даже влиять на их работу.

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

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

Событие OnBeforeCrmDealAdd

Событие вызываемое перед созданием элемента методом CCrmDeal::Add.

Параметр Значение
&$arFields Поля создаваемого элемента

Возвращаемое значение: true успешное выполнение. false произошла ошибка, обработка других событий не будет продолжена.

Пример подписки на события с успешным ответом:

$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible(
    'crm',
    'OnBeforeCrmDealAdd',
    function( &$arFields )
    {
        // $arFields may change (add fields, modify or unset some parameters)
        return true;
    }
);

Пример возврата ошибки:

$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible(
    'crm',
    'OnBeforeCrmCompanyAdd',
    function( &$arFields )
    {
        // $arFields may change (add fields, modify or unset some parameters)
        $arFields['RESULT_MESSAGE'] = 'Запрещено создавать компанию';
        return false;
    }
);

Событие OnAfterCrmDealAdd

Событие вызываемое после успешного создания элемента методом CCrmDeal::Add.

Параметр Значение
&$arFields Поля создаваемого элемента

Возвращаемое значение не обрабатывается.

Пример подписки на событие:

$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible(
    'crm',
    'OnAfterCrmDealAdd',
    function( &$arFields )
    {
        // Change $arFields doesn't matter for action, but touch other events
    }
);

Событие OnAfterExternalCrmDealAdd

Данное событие повторяет поведение события OnAfterCrmDealAdd с одним условием: оно будет вызвано только в том случае, если у элемента задано значение поля ORIGIN_ID. В противном случае не вызывается.

Параметр Значение
&$arFields Поля создаваемого элемента

Возвращаемое значение не обрабатывается.

Пример подписки на событие:

$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible(
    'crm',
    'OnAfterCrmDealAdd',
    function( &$arFields )
    {
        // Change $arFields doesn't matter for action, but touch other events
    }
);

Событие OnBeforeCrmDealUpdate

Событие вызываемое перед обновлением элемента методом CCrmDeal::Update.

Параметр Значение
&$arFields Поля обновляемого элемента

Возвращаемое значение: true успешное выполнение. false произошла ошибка, обработка других событий не будет продолжена.

Пример подписки на события с успешным ответом:

$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible(
    'crm',
    'OnBeforeCrmDealUpdate',
    function( &$arFields )
    {
        // $arFields may change (add fields, modify or unset some parameters)
        return true;
    }
);

Пример возврата ошибки:

$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible(
    'crm',
    'OnBeforeCrmDealUpdate',
    function( &$arFields )
    {
        // $arFields may change (add fields, modify or unset some parameters)
        $arFields['RESULT_MESSAGE'] = 'Запрещено изменять сделку';
        return false;
    }
);

Событие OnAfterCrmDealUpdate

Событие вызываемое после успешного обновления элемента методом CCrmDeal::Update.

Параметр Значение
&$arFields Поля обновляемого элемента

Возвращаемое значение не обрабатывается.

Пример подписки на событие:

$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible(
    'crm',
    'OnAfterCrmDealUpdate',
    function( &$arFields )
    {
        // Change $arFields doesn't matter for action, but touch other events
    }
);

Событие OnBeforeCrmDealDelete

Событие вызываемое перед удалением элемента методом CCrmDeal::Delete или перемещения в корзину.

Параметр Значение
$id Primary key удаляемого элемента

Возвращаемое значение: true успешное выполнение. false произошла ошибка, обработка других событий не будет продолжена.

Пример подписки на события с успешным ответом:

$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible(
    'crm',
    'OnBeforeCrmDealDelete',
    function( $id )
    {
        // $arFields may change (add fields, modify or unset some parameters)
        return true;
    }
);

Пример возврата ошибки:

$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible(
    'crm',
    'OnBeforeCrmDealDelete',
    function( $id )
    {
        global $APPLICATION;
        $APPLICATION->ThrowException("Some error");
        return false;
    }
);

Событие OnAfterCrmDealDelete

Событие вызываемое после успешного удаления элемента методом CCrmDeal::Delete или перемещения в корзину.

Параметр Значение
$id Primary key удаляемого элемента

Возвращаемое значение не обрабатывается.

Пример подписки на событие:

$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible(
    'crm',
    'OnAfterCrmDealDelete',
    function( $id )
    {
        // Some actions
    }
);

И хотя в событие поступает primary key удаляемой сущности, в момент выполнения события она уже удалена и не может быть получена через списочные методы.

Событие OnAfterCrmDealProductRowsSave

Событие вызываемое после изменения товарных позиций из публичной части или методом CCrmDeal::SaveProductRows.

Параметр Значение
$id Primary key сделки
$rows Строки товарных позиций

Возвращаемые значения не обрабатываются.


Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!