• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/volatile/type/state.php
  • Класс: Bitrix\Crm\Integrity\Volatile\Type\State
  • Вызов: State::set
public function set(int $volatileTypeId, int $stateId, int $currentStateId = null): Result
{
	$result = new Result();

	if ($currentStateId === null)
	{
		$localResult = $this->get($volatileTypeId);
		if (!$localResult->isSuccess())
		{
			$result->addErrors($localResult->getErrors());

			return $result;
		}

		$currentStateId = $localResult->getData()['stateId'];
	}

	if (!$this->checkStateTransition($currentStateId, $stateId))
	{
		$result->addError(
			$this->makeErrorByCode(
				static::ERR_STATE_TRANSITION_IMPOSSIBLE,
				[
					'volatileTypeId' => $volatileTypeId,
					'currentStateId' => $currentStateId,
					'nextStateId' => $stateId,
				]
			)
		);

		return $result;
	}

	$active = $stateId === static::STATE_READY ? 'Y' : 'N';

	if ($stateId === static::STATE_INDEX)
	{
		$agentParams = [];
		$userId = CCrmSecurityHelper::GetCurrentUserID();
		if ($userId > 0)
		{
			$agentParams['USER_ID'] = $userId;
		}
	}

	DuplicateIndexTypeSettingsTable::update(
		$volatileTypeId,
		['ACTIVE' => $active, 'STATE_ID' => $stateId]
	);

	return $result;
}