• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/database/structure/closuretree.php
  • Класс: BitrixTasksInternalsDataBaseStructureClosureTree
  • Вызов: ClosureTree::getRootNode
static function getRootNode($id, array $parameters = array(), array $settings = array())
{
	$id = intval($id);
	if(!$id)
	{
		return null;
	}

	if(!$settings['RETURN_ARRAY'])
	{
		// todo: future-reserved, to be able to return object
		throw new MainNotImplementedException();
	}

	/** @var DataManager $dc */
	$dc = static::getDataController();
	$pCName = static::getParentNodeColumnName();
	$cName = static::getNodeColumnName();

	$parameters['runtime'][] = new EntityReferenceField(
		'TDD',
		$dc::getEntity(),
		array(
			'=ref.'.$cName => 'this.'.$pCName,
			//'=ref.DIRECT' => array('?', '1'),
			'!=ref.'.$cName => 'ref.'.$pCName,
		),
		array(
			'join_type' => 'left'
		)
	);
	$parameters['filter']['='.$cName] = $id;
	$parameters['filter']['=TDD.'.$pCName] = false;
	$parameters['limit'] = 1;

	$parameters['select'][] = $pCName;

	$item = $dc::getList($parameters)->fetch();

	if($item)
	{
		$item['__ID'] = $item[$pCName];
		unset($item[$pCName]);
	}

	return $item;
}