Field::processAttributes

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. Field
  4. processAttributes
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/field.php
  • Класс: Bitrix\Crm\Field
  • Вызов: Field::processAttributes
protected function processAttributes(Item $item): Result
{
	$result = new Result();

	if(empty($this->attributes))
	{
		return $result;
	}

	$isValueChanged = $item->isChanged($this->name);
	$fieldValue = $item->get($this->name);
	$isValueEmpty = $this->isValueEmpty($fieldValue);
	$isNew = $item->isNew();

	foreach($this->attributes as $attribute)
	{
		if(
			$attribute === \CCrmFieldInfoAttr::ReadOnly
			&& $isValueChanged
		)
		{
			$item->reset($this->name);
			if($isNew)
			{
				$item->set($this->name, $item->getDefaultValue($this->name));
			}
		}
		elseif(
			$attribute === \CCrmFieldInfoAttr::HasDefaultValue
			&& $isValueEmpty
			&& $isNew
		)
		{
			$item->set($this->name, $item->getDefaultValue($this->name));
		}
		elseif(
			$attribute === \CCrmFieldInfoAttr::Immutable
			&& $isValueChanged
			&& !$isNew
		)
		{
			$item->reset($this->name);
		}
//			elseif(
//				$attribute === \CCrmFieldInfoAttr::Required
//				&& $isValueEmpty
//			)
//			{
//				$result->addError(static::getRequiredEmptyError($this->getName(), $this->getTitle()));
//			}
		elseif(
			$attribute === \CCrmFieldInfoAttr::Unique
			&& !$isValueEmpty
			&& !$this->isValueUnique($fieldValue, $item->getId() ?? 0)
		)
		{
			$result->addError($this->getValueNotUniqueError());
		}
		elseif ($attribute === \CCrmFieldInfoAttr::CanNotBeEmptied && !$isNew && $isValueEmpty)
		{
			if ($isValueChanged && !$this->isValueEmpty($item->remindActual($this->getName())))
			{
				$item->reset($this->getName());
			}
			elseif ($this->isHasDefaultValue())
			{
				$item->set($this->getName(), $item->getDefaultValue($this->getName()));
			}
		}
	}

	return $result;
}

Добавить комментарий