• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/manager/task/projectdependence.php
  • Класс: Bitrix\Tasks\Manager\Task\should
  • Вызов: should::getListByParentEntity
static function getListByParentEntity($userId, $taskId, array $parameters = array())
{
	static::checkCanReadTaskThrowException($userId, $taskId);

	$data = array();

	if($parameters['TYPE'] == self::ALL || $parameters['TYPE'] == self::OUTGOING)
	{
		throw new \Bitrix\Main\NotImplementedException('Only INGOING');
	}
	if(!$parameters['DIRECT'])
	{
		throw new \Bitrix\Main\NotImplementedException('Only DIRECT');
	}

	$listParameters = array(
		'select' => array(
			'DEPENDS_ON_ID',
			//'DIRECT', // system field, do not select
			//'MPCITY', // system field, do not select
			'TASK_ID',
			'TYPE',
		),
		'filter' => array('=DIRECT' => '1', '=TASK_ID' => $taskId)
	);

	if ($parameters['DEPENDS_ON_DATA'] ?? null)
	{
		$listParameters['select'][static::SE_PREFIX.'DEPENDS_ON_TITLE'] = 'DEPENDS_ON.TITLE';
	}

	// checking rights on dependent tasks
	$mixins = TaskTable::getRuntimeMixins(
		array(
			array(
				'CODE' => 			'CHECK_RIGHTS',
				'USER_ID' => 		$userId,
				'REF_FIELD' => 		'DEPENDS_ON_ID',
				'APPLY_FILTER'=>['ID'=> $taskId]
			)
		)
	);
	if(!empty($mixins))
	{
		$listParameters['runtime'] = $mixins;
	}

	$res = DependenceTable::getList($listParameters);
	while($item = $res->fetch())
	{
		$seDependsOn = array();
		foreach($item as $fld => $value)
		{
			if($fld == static::SE_PREFIX.'DEPENDS_ON_TITLE')
			{
				$seDependsOn['TITLE'] = $value;
				unset($item[$fld]);
			}
		}

		if(!empty($seDependsOn))
		{
			$seDependsOn['ID'] = $item['DEPENDS_ON_ID'];
			$item[static::SE_PREFIX.'DEPENDS_ON'] = $seDependsOn;
		}

		if (isset($parameters['DROP_PRIMARY']))
		{
			unset($item['TASK_ID']);
		}

		$data[] = $item;
	}

	return array('DATA' => $data, 'CAN' => array());
}