• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/admin/product.php
  • Класс: BitrixSaleHelpersAdminProduct
  • Вызов: Product::fillMeasures
private function fillMeasures()
{
	$measures = array();
	$defaultMeasure = CCatalogMeasure::getDefaultMeasure(true, true);
	$defaultMeasureText = ($defaultMeasure["SYMBOL_RUS"] != '' ? $defaultMeasure["SYMBOL_RUS"] : $defaultMeasure["SYMBOL_INTL"]);
	$defaultMeasureCode = 0;
	$settedIds = array();

	$dbRes = CCatalogMeasure::GetList(
		array(),
		array("ID" => $this->measuresIds),
		false,
		false,
		array("ID", "CODE", "SYMBOL_RUS", "SYMBOL_INTL")
	);

	while ($measure = $dbRes->Fetch())
		$measures[$measure['ID']] = $measure;

	foreach($this->catalogData as $productId => $productFields)
	{
		if(!isset($this->resultData[$productId]))
			continue;

		$this->resultData[$productId]["MEASURE_TEXT"] = $defaultMeasureText;
		$this->resultData[$productId]["MEASURE_CODE"] = $defaultMeasureCode;

		if (empty($measures[$productFields['MEASURE']]) || !is_array($measures[$productFields['MEASURE']]))
			continue;

		$measure = $measures[$productFields['MEASURE']];

		$this->resultData[$productId]["MEASURE_TEXT"] = ($measure["SYMBOL_RUS"] != '' ? $measure["SYMBOL_RUS"] : $measure["SYMBOL_INTL"]);
		$this->resultData[$productId]["MEASURE_CODE"] = $measure["CODE"] != '' ? $measure["CODE"] : $defaultMeasureText;

		$settedIds[] = $productId;
	}

	$needToSet = array_diff_key($this->resultData, array_flip($settedIds));

	foreach($needToSet as $productId => $fields)
	{
		if(!isset($fields['MEASURE_CODE']))
			$this->resultData[$productId]['MEASURE_CODE'] = $defaultMeasureCode;

		if(!empty($fields['MEASURE_TEXT']))
			$this->resultData[$productId]["MEASURE_TEXT"] = $defaultMeasureText;
	}
}