• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/item.php
  • Класс: Bitrix\Crm\Controller\Item
  • Вызов: Item::updateAction
public function updateAction(int $entityTypeId, int $id, array $fields): ?array
{
	$factory = $this->getFactory($entityTypeId);
	if (!$factory)
	{
		return null;
	}
	$item = $factory->getItem($id);
	if (!$item)
	{
		$this->addError(new Error(
			Loc::getMessage('CRM_TYPE_ITEM_NOT_FOUND'),
			ErrorCode::NOT_FOUND
		));
		return null;
	}
	if (!Container::getInstance()->getUserPermissions()->canUpdateItem($item))
	{
		$this->addError(\Bitrix\Crm\Controller\ErrorCode::getAccessDeniedError());

		return null;
	}

	$fields = $this->convertKeysToUpper($fields);
	$this->processFields($item, $fields, $factory->getFieldsCollection());
	$operation = $factory->getUpdateOperation($item);
	if (
		$this->getScope() === static::SCOPE_REST
		&& !RestSettings::getCurrent()->isRequiredUserFieldCheckEnabled()
	)
	{
		$operation->disableCheckRequiredUserFields();
	}
	$result = $operation->launch();
	if ($result->isSuccess())
	{
		$item = $operation->getItem();

		return [
			'item' => $this->getJsonForItems($factory, [$operation->getItem()])[$item->getId()],
		];
	}

	$this->addErrors($result->getErrors());

	return null;
}