• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/recycling/dynamiccontroller.php
  • Класс: Bitrix\Crm\Recycling\DynamicController
  • Вызов: DynamicController::createItem
protected function createItem(array $fields): Crm\Item
{
	$factory = $this->getFactory();

	$item = $factory->createItem();
	// remove parent field values, because actual values will be restored in recoverCustomRelations
	foreach ($fields as $name => $value)
	{
		if (Crm\Service\ParentFieldManager::isParentFieldName($name))
		{
			unset($fields[$name]);
		}
		$field = $factory->getFieldsCollection()->getField($name);
		if (
			$field
			&& $field->getType() === Crm\Field::TYPE_DATETIME
			&& !$field->isValueEmpty($value)
		)
		{
			if (is_array($value))
			{
				$values = [];
				foreach ($value as $singleValue)
				{
					$values[] = Main\Type\DateTime::createFromUserTime($singleValue);
				}
				$fields[$name] = $values;
			}
			else
			{
				$fields[$name] = Main\Type\DateTime::createFromUserTime($value);
			}
		}
	}
	$item->setFromCompatibleData($fields);

	if($item)
	{
		$categoryId = $item->getCategoryId();

		if(!$factory->getCategory((int)$categoryId))
		{
			$item->setCategoryId($factory->getDefaultCategory()->getId());
		}

		if($factory->isStagesEnabled() && !$factory->getStage((string)$item->getStageId()))
		{
			$stages = $factory->getStages($item->getCategoryId())->getAll();
			$item->setStageId($stages[0]->getStatusId());
		}

		return $item;
	}

	throw new Main\ArgumentException('Could not create factory', 'entityTypeId');
}