• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/lib/entity/element.php
  • Класс: BitrixListsEntityElement
  • Вызов: Element::getAvailableFields
public function getAvailableFields()
{
	$availableFields = array("ID", "ACTIVE", "NAME", "TAGS", "XML_ID", "EXTERNAL_ID", "PREVIEW_TEXT",
		"PREVIEW_TEXT_TYPE", "PREVIEW_PICTURE", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "DETAIL_PICTURE",
		"CHECK_PERMISSIONS", "PERMISSIONS_BY", "CATALOG_TYPE", "MIN_PERMISSION", "SEARCHABLE_CONTENT",
		"SORT", "TIMESTAMP_X", "DATE_MODIFY_FROM", "DATE_MODIFY_TO", "MODIFIED_USER_ID", "MODIFIED_BY",
		"DATE_CREATE", "CREATED_USER_ID", "CREATED_BY", "DATE_ACTIVE_FROM", "DATE_ACTIVE_TO", "ACTIVE_DATE",
		"ACTIVE_FROM", "ACTIVE_TO", "SECTION_ID");

	$listCustomFields = [];

	$fields = $this->listObject->getFields();

	foreach ($fields as $field)
	{
		if ($field["CODE"] <> '')
		{
			$availableFields[] = "PROPERTY_".$field["CODE"];
		}

		if ($this->isFieldDateType($field["TYPE"]))
		{
			$callback = $field["PROPERTY_USER_TYPE"]["ConvertToDB"];
			$listCustomFields[$field["FIELD_ID"]] = function ($value) use ($callback) {
				$regexDetectsIso8601 = '/^([+-]?d{4}(?!d{2}b))'
					. '((-?)((0[1-9]|1[0-2])(3([12]d|0[1-9]|3[01]))?'
					. '|W([0-4]d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]d'
					. '|[12]d{2}|3([0-5]d|6[1-6])))([Ts]((([01]d|2[0-3])'
					. '((:?)[0-5]d)?|24:?00)([.,]d+(?!:))?)?(17[0-5]d'
					. '([.,]d+)?)?([zZ]|([+-])([01]d|2[0-3]):?([0-5]d)?)?)?)?$/';
				if (preg_match($regexDetectsIso8601, $value) === 1)
				{
					return CRestUtil::unConvertDateTime($value);
				}
				elseif (is_callable($callback))
				{
					return call_user_func_array($callback, [[], ["VALUE" => $value]]);
				}
				else
				{
					return $value;
				}
			};
		}
	}

	$availableFields = array_merge($availableFields, array_keys($fields));

	return array($availableFields, $listCustomFields);
}