• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/lib/field.php
  • Класс: BitrixListsField
  • Вызов: Field::renderFieldByTypeL
static function renderFieldByTypeL(array $field)
{
	if(!empty(self::$cache[$field['ID']]))
	{
		$items = self::$cache[$field['ID']];
	}
	else
	{
		$items = array();
		if(empty($field['DEFAULT']))
			$items[] = Loc::getMessage('LISTS_FIELD_NO_VALUE');
		$listElements = CIBlockProperty::getPropertyEnum($field['ID']);
		while($listElement = $listElements->fetch())
		{
			if(!empty($field['DEFAULT']))
			{
				if($listElement['DEF'] == 'Y')
				{
					$items[$listElement['ID']] = HtmlFilter::encode($listElement['VALUE']);
				}
			}
			else
			{
				$items[$listElement['ID']] = HtmlFilter::encode($listElement['VALUE']);
			}
			if ($listElement['DEF'] == 'Y')
			{
				$field['DEFAULT_VALUE'] = HtmlFilter::encode($listElement['VALUE']);
			}
		}

		self::$cache[$field['ID']] = $items;
	}

	if (is_array($field['VALUE']) && empty($field['VALUE']))
	{
		$result = $items[0] ?? null;
	}
	elseif (is_array($field['VALUE']))
	{
		foreach ($items as $itemKey => $itemValue)
		{
			if (!in_array($itemKey, $field['VALUE']))
			{
				unset($items[$itemKey]);
			}
		}
		$result = implode(self::$separator, $items);
	}
	else
	{
		$result = $items[$field['VALUE']] ?? null;
	}

	return ($result ?: $field['DEFAULT_VALUE']);
}