- Модуль: 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;
}