• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/Timeline/Monitor.php
  • Класс: Bitrix\Crm\Service\Timeline\Monitor
  • Вызов: Monitor::processSingleItemChange
private function processSingleItemChange(Factory $factory, Item $item): void
{
	$isPushAlreadySent = false;

	$shouldRecalculate = $this->isTimelineChanged(ItemIdentifier::createByItem($item));
	if ($shouldRecalculate && $item->hasField(Item::FIELD_NAME_LAST_ACTIVITY_TIME))
	{
		/** @var DateTime|null $lastActivityTimePrevious */
		$lastActivityTimePrevious = $item->get(Item::FIELD_NAME_LAST_ACTIVITY_TIME);
		$this->launchUpdateOperation($factory, $item);
		/** @var DateTime|null $lastActivityTimeCurrent */
		$lastActivityTimeCurrent = $item->get(Item::FIELD_NAME_LAST_ACTIVITY_TIME);

		if (
			$lastActivityTimePrevious
			&& $lastActivityTimeCurrent
			&& $lastActivityTimePrevious->getTimestamp() !== $lastActivityTimeCurrent->getTimestamp()
		)
		{
			$isPushAlreadySent = true;
		}
	}

	if (!$isPushAlreadySent)
	{
		$this->sendItemUpdatedPush($item);
	}
}