• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/activity/provider/tasks/task.php
  • Класс: Bitrix\Crm\Activity\Provider\Tasks\Task
  • Вызов: Task::onTriggered
static function onTriggered(int $taskId, array &$currentTaskFields, array &$previousTaskFields): bool
{
	if ($taskId <= 0 || !Loader::includeModule('tasks'))
	{
		return false;
	}

	$itemIterator = \CTasks::getByID($taskId, false);
	$task = $itemIterator->fetch();
	if (!$task)
	{
		return false;
	}

	$isStatusChanged = (isset($currentTaskFields['STATUS'])
		&& (string)$currentTaskFields['STATUS']
		!== (string)$previousTaskFields['STATUS']);
	$listIterator = \CCrmActivity::getList(
		[],
		[
			'=TYPE_ID' => \CCrmActivityType::Provider,
			'=PROVIDER_ID' => self::getId(),
			// '=PROVIDER_TYPE_ID' => self::getProviderTypeId(),
			'=ASSOCIATED_ENTITY_ID' => $taskId,
			'CHECK_PERMISSIONS' => 'N',
		]
	);

	$isFound = false;
	$taskBindings = [];

	while ($activity = $listIterator->fetch())
	{
		$isFound = true;
		self::legacySetBindings($task, $activity);
		if (isset($activity['BINDINGS']) && count($activity['BINDINGS']) > 0)
		{
			\CCrmActivity::update($activity['ID'], $activity, false, true, self::UPDATE_OPTIONS);
			\CCrmLiveFeed::syncTaskEvent($activity, $task);
			$taskBindings = $activity['BINDINGS'];
		}
	}

	if (!$isFound)
	{
		return true;
	}

	if ($isStatusChanged && $taskBindings)
	{
		TaskStatusTrigger::execute($taskBindings, ['TASK' => $task]);
	}

	return true;
}