• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/item.php
  • Класс: BitrixTasksItem
  • Вызов: Item::decodeSelectExpression
private function decodeSelectExpression($select)
{
	$map = $this->getMap();

	if($select == '~') // only cached fields
	{
		$fields = $this->getCachedFields();
	}
	elseif($select == '#') // only tablet fields
	{
		$fields = $map->getTabletFieldNames();
	}
	elseif($select == 'UF_#') // only user fields
	{
		$fields = $map->getUserFieldNames();
	}
	elseif(is_array($select) && !empty($select)) // only exactly specified fields
	{
		$fields = array();
		$expressions = array_unique($select);
		foreach($expressions as $expression)
		{
			if(
				$expression == '~' ||
				$expression == '#' ||
				$expression == 'UF_#' ||
				static::isWildCard($expression) ||
				static::isRegularExpression($expression)
			)
			{
				$fields = array_merge($fields, $this->decodeSelectExpression($expression));
			}
			else
			{
				$fields[] = $expression;
			}
		}
	}
	elseif(static::isWildCard($select)) // field names against wildcard
	{
		// todo: implement wildcard here, for example: * (all), UF_* (user fields), SE_* (sub-entities), *_FIELD_NAME_* (custom wildcard), etc...
		throw new NotImplementedException();
	}
	elseif(static::isRegularExpression($select))
	{
		throw new NotImplementedException();
	}
	else // iterate all fields
	{
		$fields = $map->getKeys();
	}

	return $fields;
}