• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/fuser.php
  • Класс: BitrixSaleFuser
  • Вызов: Fuser::add
static function add(array $options = []): Result
{
	$result = new Result();

	$currentTime = new MainTypeDateTime();
	$userCode = static::generateCode();
	$currentUserId = self::getCurrentUserId();

	$options['save'] ??= false;
	if (!is_bool($options['save']))
	{
		$options['save'] = false;
	}

	/** @var ORMDataAddResult $internalResult */
	$internalResult = static::save(
		null,
		[
			'DATE_INSERT' => $currentTime,
			'DATE_UPDATE' => $currentTime,
			'USER_ID' => $currentUserId,
			'CODE' => $userCode,
		]
	);
	if (!$internalResult->isSuccess())
	{
		$result->addErrors($internalResult->getErrors());

		return $result;
	}

	$id = (int)$internalResult->getId();
	if ($options['save'] && $currentUserId !== null)
	{
		$cookieValue = (static::isEncodeCookie() ? $userCode : (string)$id);
		static::setIdToCookie($cookieValue);
	}
	static::setIdToSession($id);
	$result->setId($id);

	return $result;
}