• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/pseudoactivity/waitentry.php
  • Класс: Bitrix\Crm\Pseudoactivity\WaitEntry
  • Вызов: WaitEntry::update
static function update($ID, array $fields, array $params = null)
{
	if(empty($fields))
	{
		return new Main\Entity\UpdateResult();
	}

	$previousFields = self::getByID($ID);
	if(!is_array($previousFields))
	{
		$result = new Main\Entity\UpdateResult();
		$result->addError(new Main\Error("Not found") );
		return $result;
	}

	$result = WaitTable::update($ID, $fields);

	if($result->isSuccess())
	{
		$timelineParams = array(
			'CURRENT_FIELDS' => self::getByID($ID),
			'PREVIOUS_FIELDS' => $previousFields
		);

		if(is_array($params) && isset($params['USER_ID']) && $params['USER_ID'] > 0)
		{
			$timelineParams['USER_ID'] = $params['USER_ID'];
		}

		\Bitrix\Crm\Timeline\WaitController::getInstance()->onModify($ID, $timelineParams);

		$ownerTypeID = isset($fields['OWNER_TYPE_ID']) ? (int)$fields['OWNER_TYPE_ID'] : 0;
		if($ownerTypeID <= 0)
		{
			$ownerTypeID = isset($previousFields['OWNER_TYPE_ID']) ? (int)$previousFields['OWNER_TYPE_ID'] : 0;
		}

		$ownerID = isset($fields['OWNER_ID']) ? (int)$fields['OWNER_ID'] : 0;
		if($ownerID <= 0)
		{
			$ownerID = isset($previousFields['OWNER_ID']) ? (int)$previousFields['OWNER_ID'] : 0;
		}

		$counterCodes = EntityCounterManager::prepareCodes(
			$ownerTypeID,
			EntityCounterType::getAll(true),
			array('ENTITY_ID' => $ownerID, 'EXTENDED_MODE' => true)
		);
		if(!empty($counterCodes))
		{
			EntityCounterManager::reset($counterCodes, array());
		}
	}
	return $result;
}