• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/Controller/Property/Action/SaveAction.php
  • Класс: BitrixIblockControllerPropertyActionSaveAction
  • Вызов: SaveAction::getPropertyFields
private function getPropertyFields(int $propertyId, int $iblockId): ?array
{
	$fields = PropertyTable::getRow([
		'filter' => [
			'=ID' => $propertyId,
			'=IBLOCK_ID' => $iblockId,
		],
	]);
	if (!$fields)
	{
		return null;
	}

	// arrayable user settings
	$fields['USER_TYPE_SETTINGS'] = $fields['USER_TYPE_SETTINGS_LIST'];
	unset($fields['USER_TYPE_SETTINGS_LIST']);

	// append section link
	$sectionProperty = SectionPropertyTable::getRow([
		'select' => [
			'SMART_FILTER',
			'DISPLAY_TYPE',
			'DISPLAY_EXPANDED',
			'FILTER_HINT',
		],
		'filter' => [
			'=IBLOCK_ID' => $iblockId,
			'=PROPERTY_ID' => $propertyId,
		],
	]);
	if (is_array($sectionProperty))
	{
		$fields += $sectionProperty;
	}

	// append features
	$fields['FEATURES'] = [];
	$rows = PropertyFeatureTable::getList([
		'select' => [
			'ID',
			'MODULE_ID',
			'FEATURE_ID',
			'IS_ENABLED',
		],
		'filter' => [
			'=PROPERTY_ID' => $propertyId,
		]
	]);
	foreach ($rows as $row)
	{
		$index = PropertyFeature::getIndex($row);
		$fields["FEATURES"][$index] = $row['IS_ENABLED'];
	}

	return $fields;
}