• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/v2/Converter/ProductConverter.php
  • Класс: BitrixCatalogv2ConverterProductConverter
  • Вызов: ProductConverter::convertSimpleSkuToSku
protected function convertSimpleSkuToSku(BaseSku $simpleItem): BaseSku
{
	/** @var BitrixCatalogv2SkuSkuFactory $skuFactory */
	$skuFactory = $this->container->get(Dependency::SKU_FACTORY, [
		Dependency::IBLOCK_INFO => $simpleItem->getIblockInfo(),
	]);

	if (!$skuFactory)
	{
		return $simpleItem;
	}

	$skuItem = $skuFactory->createEntity($skuFactory::SKU);
	if ($skuItem->isSimple())
	{
		return $simpleItem;
	}

	/** @var BitrixCatalogv2SkuSkuCollection $skuCollection */
	$skuCollection = $simpleItem->getParentCollection();
	$skuCollection
		->remove($simpleItem)
		->clearRemoved($simpleItem)
		->add($skuItem)
	;

	$fields = array_diff_key($simpleItem->getFields(), [
		'ID' => true,
		'IBLOCK_ID' => true,
		'TYPE' => true,
		'DETAIL_TEXT' => true,
		'DETAIL_TEXT_TYPE' => true,
		'PREVIEW_TEXT' => true,
		'PREVIEW_TEXT_TYPE' => true,
	]);
	$skuItem->setFields($fields);

	$skuItem->getPriceCollection()->setValues($simpleItem->getPriceCollection()->getValues());

	$defaultRatio = $simpleItem->getMeasureRatioCollection()->findDefault();
	if ($defaultRatio)
	{
		$skuItem->getMeasureRatioCollection()->setDefault($defaultRatio->getRatio());
	}

	return $skuItem;
}