• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/component/base.php
  • Класс: BitrixIblockComponentBase
  • Вызов: Base::modifyElementCommonData
protected function modifyElementCommonData(array &$element)
{
	$element['ID'] = (int)$element['ID'];
	$element['IBLOCK_ID'] = (int)$element['IBLOCK_ID'];

	if ($this->arParams['HIDE_DETAIL_URL'])
	{
		$element['DETAIL_PAGE_URL'] = $element['~DETAIL_PAGE_URL'] = '';
	}

	if ($this->isEnableCompatible())
	{
		$element['ACTIVE_FROM'] = ($element['DATE_ACTIVE_FROM'] ?? null);
		$element['ACTIVE_TO'] = ($element['DATE_ACTIVE_TO'] ?? null);
	}

	$ipropValues = new IblockInheritedPropertyElementValues($element['IBLOCK_ID'], $element['ID']);
	$element['IPROPERTY_VALUES'] = $ipropValues->getValues();

	IblockComponentTools::getFieldImageData(
		$element,
		array('PREVIEW_PICTURE', 'DETAIL_PICTURE'),
		IblockComponentTools::IPROPERTY_ENTITY_ELEMENT,
		'IPROPERTY_VALUES'
	);

	if (isset($element['~TYPE']))
	{
		$productFields = $this->getProductFields($element['IBLOCK_ID']);
		$translateFields = $this->getCompatibleProductFields();

		$element['PRODUCT'] = array(
			'TYPE' => (int)$element['~TYPE'],
			'AVAILABLE' => $element['~AVAILABLE'],
			'BUNDLE' => $element['~BUNDLE'],
			'QUANTITY' => $element['~QUANTITY'],
			'QUANTITY_TRACE' => $element['~QUANTITY_TRACE'],
			'CAN_BUY_ZERO' => $element['~CAN_BUY_ZERO'],
			'MEASURE' => (int)$element['~MEASURE'],
			'SUBSCRIBE' => $element['~SUBSCRIBE'],
			'VAT_ID' => (int)$element['~VAT_ID'],
			'VAT_RATE' => 0,
			'VAT_INCLUDED' => $element['~VAT_INCLUDED'],
			'WEIGHT' => (float)$element['~WEIGHT'],
			'WIDTH' => (float)$element['~WIDTH'],
			'LENGTH' => (float)$element['~LENGTH'],
			'HEIGHT' => (float)$element['~HEIGHT'],
			'PAYMENT_TYPE' => $element['~PAYMENT_TYPE'],
			'RECUR_SCHEME_TYPE' => $element['~RECUR_SCHEME_TYPE'],
			'RECUR_SCHEME_LENGTH' => (int)$element['~RECUR_SCHEME_LENGTH'],
			'TRIAL_PRICE_ID' => (int)$element['~TRIAL_PRICE_ID']
		);

		$vatId = 0;
		$vatRate = 0;
		if ($element['PRODUCT']['VAT_ID'] > 0)
			$vatId = $element['PRODUCT']['VAT_ID'];
		elseif ($this->storage['IBLOCKS_VAT'][$element['IBLOCK_ID']] > 0)
			$vatId = $this->storage['IBLOCKS_VAT'][$element['IBLOCK_ID']];
		if ($vatId > 0 && isset($this->storage['VATS'][$vatId]))
			$vatRate = $this->storage['VATS'][$vatId];
		$element['PRODUCT']['VAT_RATE'] = $vatRate;
		unset($vatRate, $vatId);
		$element['PRODUCT']['USE_OFFERS'] = $element['PRODUCT']['TYPE'] == CatalogProductTable::TYPE_SKU;

		if ($this->isEnableCompatible())
		{
			foreach ($translateFields as $currentKey => $oldKey)
				$element[$oldKey] = $element[$currentKey];
			unset($currentKey, $oldKey);
			$element['~CATALOG_VAT'] = $element['PRODUCT']['VAT_RATE'];
			$element['CATALOG_VAT'] = $element['PRODUCT']['VAT_RATE'];
		}
		else
		{
			// temporary (compatibility custom templates)
			$element['~CATALOG_TYPE'] = $element['PRODUCT']['TYPE'];
			$element['CATALOG_TYPE'] = $element['PRODUCT']['TYPE'];
			$element['~CATALOG_QUANTITY'] = $element['PRODUCT']['QUANTITY'];
			$element['CATALOG_QUANTITY'] = $element['PRODUCT']['QUANTITY'];
			$element['~CATALOG_QUANTITY_TRACE'] = $element['PRODUCT']['QUANTITY_TRACE'];
			$element['CATALOG_QUANTITY_TRACE'] = $element['PRODUCT']['QUANTITY_TRACE'];
			$element['~CATALOG_CAN_BUY_ZERO'] = $element['PRODUCT']['CAN_BUY_ZERO'];
			$element['CATALOG_CAN_BUY_ZERO'] = $element['PRODUCT']['CAN_BUY_ZERO'];
			$element['~CATALOG_SUBSCRIBE'] = $element['PRODUCT']['SUBSCRIBE'];
			$element['CATALOG_SUBSCRIBE'] = $element['PRODUCT']['SUBSCRIBE'];
		}

		foreach ($productFields as $field)
			unset($element[$field], $element['~'.$field]);
		unset($field);
	}
	else
	{
		$element['PRODUCT'] = array(
			'TYPE' => null,
			'AVAILABLE' => null,
			'USE_OFFERS' => false
		);
	}

	$element['PROPERTIES'] = array();
	$element['DISPLAY_PROPERTIES'] = array();
	$element['PRODUCT_PROPERTIES'] = array();
	$element['PRODUCT_PROPERTIES_FILL'] = array();
	$element['OFFERS'] = array();
	$element['OFFER_ID_SELECTED'] = 0;

	if (!empty($this->storage['CATALOGS'][$element['IBLOCK_ID']]))
		$element['CHECK_QUANTITY'] = $this->isNeedCheckQuantity($element['PRODUCT']);

	if ($this->getAction() === 'bigDataLoad')
	{
		$element['RCM_ID'] = $this->recommendationIdToProduct[$element['ID']];
	}
}