• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/item/replicator/task/template.php
  • Класс: BitrixTasksItemReplicatorTaskTemplate
  • Вызов: Template::createItemFromData
private function createItemFromData($data, $dataMixin, $userId)
{
	$itemClass = static::getItemClass();
	$converter = $this->getConverter();

	$dstInstance = null;
	$item = new $itemClass(0, $userId); // created source instance
	$item->setData($data, true); // set data in raw format, as it came directly from database
	$errorPrefix = 'SUB_ITEM_REPLICATION.';

	$creationResult = new Result();

	$conversionResult = $item->transformWith($converter); // converted to the destination instance
	if($conversionResult->isSuccess()) // was able to produce an item
	{
		$dstInstance = $conversionResult->getInstance();
		$dstInstance->mixData($dataMixin);

		$saveResult = $dstInstance->save();
		if(!$saveResult->isSuccess()) // but was not able to save it
		{
			$dstInstance->abortTransformation($this->getConverter()); // rolling back possible temporal data creation
		}

		if(!$saveResult->getErrors()->isEmpty())
		{
			$creationResult->getErrors()->load($saveResult->getErrors());
		}
	}
	else
	{
		if(!$conversionResult->getErrors()->isEmpty())
		{
			$creationResult->getErrors()->load($conversionResult->getErrors());
		}
	}

	$creationResult->setInstance($dstInstance);
	//$result->getErrors()->load($creationResult->getErrors()->prefixCode($errorPrefix));

	return $creationResult;
}