Как отловить событие onCrmCompanyAdd в Битрикс24?

Как отловить событие onCrmCompanyAdd в Битрикс24, чтобы обработчик был в init.php?

В обработчике необходимо проверить ИНН новой компании на наличие "дубляже" с уже существующими. Если есть дубляж, то создать задачу "на ручную проверку дубляжа".

Проблема отловить событие добавления компании.
  • Вопрос задан
  • 1087 просмотров
Решения вопроса 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
Примечание к коду ниже: если ИНН у вас поле компании (пользовательское, UF_*), то в методе handleCompanyAdd следует проверить его на уникальность и уже выполнить нужное вам действие.
Если ИНН это поле реквизитов, то зарегистрировать агента, так как на момент создания компании реквизиты еще могут быть не сохранены.

/**
 * Получаем объект менеджера событий.
 * Нужен для подписки на событие
 * @var Main\EventManager
 */
$eventManager = \Bitrix\Main\EventManager::getInstance();

/**
 * Подписка на событие "после создании компании"
 * постфикс Compatible нужен потому что событие из старого ядра 
 */
$eventManager->addEventHandlerCompatible(
	"crm",
	"OnAfterCrmCompanyAdd",
	[
		CompanyHandler::class,
		"handleCompanyAdd"
	]
);

class CompanyHandler
{
	/**
	 * Обработчик события crm::OnAfterCrmCompanyAdd
	 * @param array &$arFields 
	 * @return boolean
	 */
	public static function handleCompanyAdd( &$arFields )
	{
		/**
		 * Тут создаешь агента для этой компании
		 * См. примечание
		 */
		return true;
	}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sslion
@sslion Автор вопроса
Мне нужно было отрабатывать два события, на создание компании и на изменение.
К сожалению корректно отрабатывает только событие изменения компании, а вот при создании, как было сказано в комментарии выше, у компании пока нет ИНН, и соответственно проверка ИНН не проходит, хотя компанию специально делали с "дубляжом"...
Может все же нужно как-то по-другому проверку проводить? (ИНН находится в реквизитах компании)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы