• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/statustable.php
  • Класс: Bitrix\Crm\StatusTable
  • Вызов: StatusTable::onBeforeUpdate
static function onBeforeUpdate(Event $event): ORM\EventResult
{
	$result = new ORM\EventResult();
	$id = $event->getParameter('id');
	$fields = $event->getParameter('fields');
	$data = null;
	if(isset($fields['ENTITY_ID']))
	{
		$data = static::getById($id)->fetch();
		if((int) $data['ENTITY_ID'] !== (int) $fields['ENTITY_ID'])
		{
			$result->addError(new ORM\EntityError(Loc::getMessage('CRM_STATUS_FIELD_UPDATE_ERROR', [
				'#STATUS_FIELD#' => 'ENTITY_ID',
			])));
		}
	}
	if(isset($fields['STATUS_ID']))
	{
		if(!$data)
		{
			$data = static::getById($id)->fetch();
		}
		if($data['STATUS_ID'] !== $fields['STATUS_ID'])
		{
			$result->addError(new ORM\EntityError(Loc::getMessage('CRM_STATUS_FIELD_UPDATE_ERROR', [
				'#STATUS_FIELD#' => 'STATUS_ID',
			])));
		}
	}
	if(isset($fields['SEMANTICS']) && $fields['SEMANTICS'] === PhaseSemantics::SUCCESS)
	{
		if(!$data)
		{
			$data = static::getById($id)->fetch();
		}
		if($data['SEMANTICS'] !== $fields['SEMANTICS'])
		{
			$result->addError(new ORM\EntityError(Loc::getMessage('CRM_STATUS_SUCCESS_SEMANTIC_UPDATE_ERROR')));
		}
	}

	return $result;
}