• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basketpropertiesbase.php
  • Класс: BitrixSaleBasketPropertiesCollectionBase
  • Вызов: BasketPropertiesCollectionBase::save
public function save()
{
	$result = new SaleResult();

	$itemsFromDb = [];

	$isItemDeleted = $this->isAnyItemDeleted();
	if ($isItemDeleted)
	{
		$basketItem = $this->getBasketItem();
		$itemsFromDbList = static::getList(
			[
				"select" => ["ID"],
				"filter" => ["BASKET_ID" => ($basketItem) ? $basketItem->getId() : 0]
			]
		);

		while ($itemsFromDbItem = $itemsFromDbList->fetch())
		{
			$itemsFromDb[$itemsFromDbItem["ID"]] = true;
		}
	}

	/** @var BasketPropertyItemBase $basketProperty */
	foreach ($this->collection as $basketProperty)
	{
		$r = $basketProperty->save();
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
		}

		unset($itemsFromDb[$basketProperty->getId()]);
	}

	foreach ($itemsFromDb as $basketPropertyId => $value)
	{
		static::delete($basketPropertyId);
	}

	if ($isItemDeleted)
	{
		$this->setAnyItemDeleted(false);
	}

	return $result;
}