• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/component/base.php
  • Класс: BitrixIblockComponentBase
  • Вызов: Base::loadMeasureRatios
protected function loadMeasureRatios(array $itemIds)
{
	if (empty($itemIds))
		return;
	MainTypeCollection::normalizeArrayValuesByInt($itemIds, true);
	if (empty($itemIds))
		return;
	$emptyRatioIds = array_fill_keys($itemIds, true);

	$iterator = CatalogMeasureRatioTable::getList(array(
		'select' => array('ID', 'RATIO', 'IS_DEFAULT', 'PRODUCT_ID'),
		'filter' => array('@PRODUCT_ID' => $itemIds),
		'order' => array('PRODUCT_ID' => 'ASC')// not add 'RATIO' => 'ASC' - result will be resorted after load prices
	));
	while ($row = $iterator->fetch())
	{
		$ratio = max((float)$row['RATIO'], (int)$row['RATIO']);
		if ($ratio > CATALOG_VALUE_EPSILON)
		{
			$row['RATIO'] = $ratio;
			$row['ID'] = (int)$row['ID'];
			$id = (int)$row['PRODUCT_ID'];
			if (!isset($this->ratios[$id]))
				$this->ratios[$id] = array();
			$this->ratios[$id][$row['ID']] = $row;
			unset($emptyRatioIds[$id]);
			unset($id);
		}
		unset($ratio);
	}
	unset($row, $iterator);
	if (!empty($emptyRatioIds))
	{
		$emptyRatio = $this->getEmptyRatio();
		foreach (array_keys($emptyRatioIds) as $id)
		{
			$this->ratios[$id] = array(
				$emptyRatio['ID'] => $emptyRatio
			);
		}
		unset($id, $emptyRatio);
	}
	unset($emptyRatioIds);
}