...Человеческий поиск в разработке...
- Модуль: 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; }