• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/grid/panel/ui/item/editactionsitem.php
  • Класс: BitrixCatalogGridPanelUIItemEditActionsItem
  • Вызов: EditActionsItem::saveElement
protected function saveElement(int $id, array $fields): Result
{
	$result = new Result();

	[$elementFields, $productFields, $priceFields] = $this->splitProductFields($fields);

	if (!empty($elementFields))
	{
		$result = parent::saveElement($id, $elementFields);
	}

	if ($result->isSuccess())
	{
		/**
		 * @var BaseProduct $product
		 */
		$product = ServiceContainer::getProductRepository($this->getIblockId())->getEntityById($id);
		if ($product)
		{
			$product->setFields($productFields);

			$sku = $product->getSkuCollection()->getFirst();
			if ($sku)
			{
				$sku->getPriceCollection()->setValues($priceFields);
			}

			$result = $product->save();
		}
		else
		{
			/**
			 * @var BaseSku $sku
			 */
			$sku = ServiceContainer::getSkuRepository($this->getIblockId())->getEntityById($id);
			if ($sku)
			{
				$sku->setFields($productFields);
				$sku->getPriceCollection()->setValues($priceFields);

				$result = $sku->save();
			}
		}
	}

	return $result;
}