Number::getByMaxNumber

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. Number
  4. getByMaxNumber
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Field/Number.php
  • Класс: Bitrix\Crm\Field\Number
  • Вызов: Number::getByMaxNumber
protected function getByMaxNumber(): ?string
{
	$tableClassName = $this->settings['tableClassName'] ?? null;
	if (!$tableClassName || !is_a($tableClassName, DataManager::class, true))
	{
		return null;
	}

	$tries = 0;
	while ($tries < static::MAX_TRIES)
	{
		$number = null;
		$tries++;
		$record = $tableClassName::getList([
			'select' => [
				new ExpressionField('LAST_NUMBER', 'MAX(CAST(%s AS UNSIGNED))', [$this->getName()]),
			],
		])->fetch();
		if ($record && !empty($record['LAST_NUMBER']))
		{
			$number = $record['LAST_NUMBER'] + 1;
		}
		if ($this->isValueUnique($number))
		{
			return $number;
		}
	}

	return null;
}

Добавить комментарий