• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/item.php
  • Класс: Bitrix\Crm\Controller\Item
  • Вызов: Item::processFields
public function processFields(
	\Bitrix\Crm\Item $item,
	array $fields,
	Field\Collection $collection
): void
{
	$fields = $collection->removeHiddenValues($fields);

	foreach($collection as $field)
	{
		$fieldName = $field->getName();
		if (!array_key_exists($fieldName, $fields))
		{
			continue;
		}

		if (empty($fields[$fieldName]))
		{
			$item->set($fieldName, null);
			continue;
		}

		if ($field->isFileUserField())
		{
			$this->processFileField($field, $item, $fields[$fieldName]);
		}
		elseif (
			$this->getScope() === self::SCOPE_REST
			&& (
				$field->getType() === Field::TYPE_DATE
				|| $field->getType() === Field::TYPE_DATETIME
			)
		)
		{
			if ($field->getType() === Field::TYPE_DATETIME)
			{
				$convertDateMethod = 'unConvertDateTime';
			}
			else
			{
				$convertDateMethod = 'unConvertDate';
			}
			if($field->isMultiple())
			{
				$result = [];
				$value = (array)$fields[$fieldName];
				foreach($value as $date)
				{
					// can return false and wrong value should not be set in this case:
					$convertedValue = \CRestUtil::$convertDateMethod($date);
					if ($convertedValue)
					{
						$result[] = $convertedValue;
					}
				}
				$item->set($fieldName, $result);
			}
			else
			{
				$convertedValue = \CRestUtil::$convertDateMethod($fields[$fieldName]);
				if ($convertedValue)
				{
					$item->set($fieldName, $convertedValue);
				}
			}
		}
		else
		{
			$value = $fields[$fieldName];
			if ($field->getType() === Field::TYPE_BOOLEAN)
			{
				$value = $this->prepareBooleanFieldValue($value);
			}
			$item->set($fieldName, $value);
		}
	}
}