• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/entitypropertyvalue.php
  • Класс: BitrixSaleEntityPropertyValue
  • Вызов: EntityPropertyValue::loadFromDb
static function loadFromDb(Entity $entity): array
{
	$propertyValues = [];
	$propertyValuesMap = [];

	if ($entity->getId() > 0)
	{
		$dbRes = static::getList(
			[
				'select' => ['ID', 'NAME', 'VALUE', 'CODE', 'ORDER_PROPS_ID'],
				'filter' => [
					'ENTITY_ID' => $entity->getId(),
					'ENTITY_TYPE' => static::getEntityType()
				]
			]
		);
		while ($row = $dbRes->fetch())
		{
			$propertyValues[$row['ID']] = $row;
			$propertyValuesMap[$row['ORDER_PROPS_ID']] = $row['ID'];
		}
	}

	/** @var EntityProperty $propertyClassName */
	$propertyClassName = static::getPropertyClassName();

	$getListParams = [
		'select' => [
			'ID',
			'PERSON_TYPE_ID',
			'NAME',
			'TYPE',
			'REQUIRED',
			'DEFAULT_VALUE',
			'SORT',
			'USER_PROPS',
			'IS_LOCATION',
			'PROPS_GROUP_ID',
			'DESCRIPTION',
			'IS_EMAIL',
			'IS_PROFILE_NAME',
			'IS_PAYER',
			'IS_LOCATION4TAX',
			'IS_FILTERED',
			'CODE',
			'IS_ZIP',
			'IS_PHONE',
			'IS_ADDRESS',
			'IS_ADDRESS_FROM',
			'IS_ADDRESS_TO',
			'ACTIVE',
			'UTIL',
			'INPUT_FIELD_LOCATION',
			'MULTIPLE',
			'SETTINGS',
			'ENTITY_TYPE'
		],
		'filter' => static::constructPropertyFilter($entity),
		'runtime' => static::getRelationRuntimeFields(),
		'order' => ['SORT' => 'ASC'],
	];

	$dbRes = $propertyClassName::getList($getListParams);
	$properties = [];
	$propRelation = [];

	while ($row = $dbRes->fetch())
	{
		$properties[$row['ID']] = $row;
		$propRelation[$row['ID']] = [];
	}

	$dbRes = OrderPropsRelationTable::getList(
		[
			'select' => [
				'PROPERTY_ID',
				'ENTITY_ID',
				'ENTITY_TYPE'
			],
			'filter' => [
				'PROPERTY_ID' => array_keys($properties)
			]
		]
	);

	while ($row = $dbRes->fetch())
	{
		$propRelation[$row['PROPERTY_ID']][] = $row;
	}

	return [$properties, $propertyValues, $propRelation, $propertyValuesMap];
}