• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/EventHistory.php
  • Класс: Bitrix\Crm\Service\EventHistory
  • Вызов: EventHistory::add
protected function add(int $eventType, $eventData, Context $context = null): Result
{
	$result = new Result();

	if (is_array($eventData))
	{
		foreach ($eventData as $eventDataNested)
		{
			$localResult = $this->add($eventType, $eventDataNested, $context);
			if (!$localResult->isSuccess())
			{
				$result->addErrors($localResult->getErrors());
			}
		}

		return $result;
	}

	$eventDataArray = $eventData->toArray();

	$this->sendEvent('OnBeforeCrmAddEvent', $eventDataArray);

	$eventTableRecord = $this->createEventTableRecord($eventType, $context);
	/** @noinspection PhpParamsInspection */
	$eventTableResult = $this->saveRecord($eventTableRecord, $eventDataArray);
	if (!empty($eventTableResult->getErrors()))
	{
		$result->addErrors($eventTableResult->getErrors());
		return $result;
	}

	$eventRelationsTableRecord = $this->createEventRelationsTableRecord($eventTableResult->getId(), $context);
	/** @noinspection PhpParamsInspection */
	$eventRelationsTableResult = $this->saveRecord($eventRelationsTableRecord, $eventDataArray);
	if (!empty($eventRelationsTableResult->getErrors()))
	{
		$result->addErrors($eventRelationsTableResult->getErrors());
	}

	if ($result->isSuccess())
	{
		$this->sendEvent('OnAfterCrmAddEvent', [$eventTableResult->getId(), $eventDataArray]);
	}

	return $result;
}