• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/v2/AgentContract/Manager.php
  • Класс: BitrixCatalogv2AgentContractManager
  • Вызов: Manager::update
static function update(int $id, array $fields, ?array $products = null): MainResult
{
	$result = new MainResult();

	if (empty($fields['MODIFIED_BY']))
	{
		$fields['MODIFIED_BY'] = MainEngineCurrentUser::get()->getId();
	}

	$fields['DATE_MODIFY'] = new MainTypeDateTime();

	$files['FILES'] = $fields['FILES'];
	$files['FILES_del'] = $fields['FILES_del'] ?? [];
	unset($fields['FILES'], $fields['FILES_del']);

	$files = self::prepareFilesToUpdate($files);

	$updateResult = CatalogAgentContractTable::update($id, $fields);
	if ($updateResult->isSuccess())
	{
		if (!is_null($products))
		{
			$deleteProductsResult = self::deleteProductsByContractId($id);
			if (!$deleteProductsResult->isSuccess())
			{
				$result->addErrors($deleteProductsResult->getErrors());
			}

			if ($products)
			{
				$addProductsResult = self::addProducts($id, $products);
				if (!$addProductsResult->isSuccess())
				{
					$result->addErrors($addProductsResult->getErrors());
				}
			}
		}

		if ($files)
		{
			self::saveFiles($id, $files);
		}
	}
	else
	{
		$result->addErrors($updateResult->getErrors());
	}

	return $result;
}