• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/compatible.php
  • Класс: BitrixSaleCompatibleOrderPropertyValuesQuery
  • Вызов: OrderPropertyValuesQuery::prepareCompatibleRows
protected function prepareCompatibleRows(array $rows)
{
	$locationIds = [];
	foreach ($rows as $key => $row)
	{
		if ($row['TYPE'] === 'LOCATION' && !empty($row['VALUE']))
		{
			if (is_array($row['VALUE']))
			{
				$locationIds = array_merge($locationIds, $row['VALUE']);
			}
			else
			{
				$locationIds[] = $row['VALUE'];
			}
		}
	}

	if (!empty($locationIds))
	{
		$locationMap = [];
		$locationRaw = BitrixSaleLocationLocationTable::getList([
			'filter' => ['=CODE' => $locationIds],
			'select' => ['ID', 'CODE']
		]);
		while ($location = $locationRaw->fetch())
		{
			$locationMap[$location['CODE']] = $location['ID'];
		}
	}

	foreach ($rows as &$row)
	{
		if (isset($row['VALUE']))
		{
			if ($row['TYPE'] === 'LOCATION' && !empty($row['VALUE']))
			{
				if (is_array($row['VALUE']))
				{
					foreach ($row['VALUE'] as &$valueItem)
					{
						$valueItem = $locationMap[$valueItem];
					}
				}
				else
				{
					$row['VALUE'] = $locationMap[$row['VALUE']];
				}
			}

			$row['PROXY_VALUE'] = $row['VALUE'];
			if (is_array($row['VALUE']))
			{
				$row['PROXY_VALUE'] = serialize($row['VALUE']);
			}
			unset($row['VALUE']);
		}
	}

	return $rows;
}