• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/catalogprovider.php
  • Класс: BitrixCatalogProductCatalogProvider
  • Вызов: CatalogProvider::setCatalogDataToProducts
static function setCatalogDataToProducts(array $products, array $catalogDataList, array $options = array()): array
	{
		$catalogDataEnabled = self::isCatalogDataEnabled($options);
		$specialFields = [];
		foreach (CatalogProductSystemField::getProviderSelectFields() as $index => $value)
		{
			$specialFields[] = is_string($index) ? $index : $value;
		}

		$result = [];
		foreach ($products as $productId => $productData)
		{
			if (!isset($catalogDataList[$productId]))
			{
				continue;
			}

			$row = $catalogDataList[$productId];

			$result[$productId] = [
				'CAN_BUY' => (
					$productData['PRODUCT_DATA']['ACTIVE'] === 'Y'
					&& $row['AVAILABLE'] === 'Y'
					? 'Y'
					: 'N'
				),
				'CAN_BUY_ZERO' => $row['CAN_BUY_ZERO'],
				'QUANTITY_TRACE' => $row['QUANTITY_TRACE'],
				'CHECK_QUANTITY' => $row['CHECK_QUANTITY'],
				'QUANTITY_RESERVED' => (float)$row['QUANTITY_RESERVED'],
				'CATALOG_XML_ID' => $productData['PRODUCT_DATA']['CATALOG_XML_ID'],
				'PRODUCT_XML_ID' => $productData['PRODUCT_DATA']['~XML_ID'],
				'PRODUCT' => $row,
			];

			if (!$catalogDataEnabled)
			{
				$basketRow = [
					'NAME' => $productData['PRODUCT_DATA']['~NAME'],
					'DETAIL_PAGE_URL' => $productData['PRODUCT_DATA']['~DETAIL_PAGE_URL'],
					'MEASURE_ID' => $row['MEASURE'],
					'MEASURE_NAME' => $row['MEASURE_NAME'],
					'MEASURE_CODE' => $row['MEASURE_CODE'],
					'BARCODE_MULTI' => $row['BARCODE_MULTI'],
					'WEIGHT' => (float)$row['WEIGHT'],
					'DIMENSIONS' => serialize(
						[
							'WIDTH' => $row['WIDTH'],
							'HEIGHT' => $row['HEIGHT'],
							'LENGTH' => $row['LENGTH'],
						]
					),
				];
				switch ($row['TYPE'])
				{
					case CatalogProductTable::TYPE_SET:
						$basketRow['TYPE'] = SaleBasketItem::TYPE_SET;
						break;
					case CatalogProductTable::TYPE_SERVICE:
						$basketRow['TYPE'] = SaleBasketItem::TYPE_SERVICE;
						break;
					default:
						$basketRow['TYPE'] = null;
						break;
				}
				foreach ($specialFields as $index)
				{
					$basketRow[$index] = $row[$index];
				}

				$result[$productId] = array_merge(
					$result[$productId],
					$basketRow
				);
			}

			$result[$productId]["VAT_INCLUDED"] = "Y";
		}

		return $result;
	}