События в Компаниях CRM Битрикс24
Как и у многих других сущностей платформы у Компаний есть события, позволяющие узнавать о каких-либо событиях и даже влиять на их работу.
Помните, что события не проверяются на цикличный вызов, поэтому если во время создания элемента на событии вы попытаетесь создать элемент, то вы можете породить бесконечный цикл.
Событие не всегда содержит полный набор полей, поэтому хорошим тоном является проверять фактическое наличие ключа в массиве параметров и в случае его отсутствия заполнение либо дефолтным значением, либо обращение в базу данных для предотвращения неопределенного поведения.
Событие OnBeforeCrmCompanyAdd
Событие вызываемое перед созданием элемента методом CCrmCompany::Add.
| Параметр | Значение |
|---|---|
| &$arFields | Поля создаваемого элемента |
Возвращаемое значение: true успешное выполнение. false произошла ошибка, обработка других событий не будет продолжена.
Пример подписки на события с успешным ответом:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'crm',
'OnBeforeCrmCompanyAdd',
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;
}
);
Событие OnAfterCrmCompanyAdd
Событие вызываемое после успешного создания элемента методом CCrmCompany::Add.
| Параметр | Значение |
|---|---|
| &$arFields | Поля создаваемого элемента |
Возвращаемое значение не обрабатывается.
Пример подписки на событие:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'crm',
'OnAfterCrmCompanyAdd',
function( &$arFields )
{
// Change $arFields doesn't matter for action, but touch other events
}
);
Событие OnAfterExternalCrmCompanyAdd
Данное событие повторяет поведение события OnAfterCrmCompanyAdd с одним условием: оно будет вызвано только в том случае, если у элемента задано значение поля ORIGIN_ID. В противном случае не вызывается.
| Параметр | Значение |
|---|---|
| &$arFields | Поля создаваемого элемента |
Возвращаемое значение не обрабатывается.
Пример подписки на событие:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'crm',
'OnAfterCrmCompanyAdd',
function( &$arFields )
{
// Change $arFields doesn't matter for action, but touch other events
}
);
Событие OnBeforeCrmCompanyUpdate
Событие вызываемое перед обновлением элемента методом CCrmCompany::Update.
| Параметр | Значение |
|---|---|
| &$arFields | Поля обновляемой компании |
Возвращаемое значение: true успешное выполнение. false произошла ошибка, обработка других событий не будет продолжена.
Пример подписки на события с успешным ответом:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'crm',
'OnBeforeCrmCompanyUpdate',
function( &$arFields )
{
// $arFields may change (add fields, modify or unset some parameters)
return true;
}
);
Пример возврата ошибки:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'crm',
'OnBeforeCrmCompanyUpdate',
function( &$arFields )
{
// $arFields may change (add fields, modify or unset some parameters)
$arFields['RESULT_MESSAGE'] = 'Запрещено изменять компанию';
return false;
}
);
Событие OnAfterCrmCompanyUpdate
Событие вызываемое после успешного обновления элемента методом CCrmCompany::Update.
| Параметр | Значение |
|---|---|
| &$arFields | Поля обновляемой компании |
Возвращаемое значение не обрабатывается.
Пример подписки на событие:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'crm',
'OnAfterCrmCompanyUpdate',
function( &$arFields )
{
// Change $arFields doesn't matter for action, but touch other events
}
);
Событие OnBeforeCrmCompanyDelete
Событие вызываемое перед удалением элемента методом CCrmCompany::Delete или перемещения в корзину.
| Параметр | Значение |
|---|---|
| $id | Primary key удаляемой сущности |
Возвращаемое значение: true успешное выполнение. false произошла ошибка, обработка других событий не будет продолжена.
Пример подписки на события с успешным ответом:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'crm',
'OnBeforeCrmCompanyDelete',
function( $id )
{
// $arFields may change (add fields, modify or unset some parameters)
return true;
}
);
Пример возврата ошибки:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'crm',
'OnBeforeCrmCompanyDelete',
function( $id )
{
global $APPLICATION;
$APPLICATION->ThrowException("Some error");
return false;
}
);
Событие OnAfterCrmCompanyDelete
Событие вызываемое после успешного удаления элемента методом CCrmCompany::Delete или перемещения в корзину.
| Параметр | Значение |
|---|---|
| $id | Primary key удаляемой сущности |
Возвращаемое значение не обрабатывается.
Пример подписки на событие:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'crm',
'OnAfterCrmCompanyDelete',
function( $id )
{
// Some actions
}
);
И хотя в событие поступает primary key удаляемой сущности, в момент выполнения события она уже удалена и не может быть получена через списочные методы.