• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/numerator/service/numeratorrequestmanager.php
  • Класс: BitrixMainNumeratorServiceNumeratorRequestManager
  • Вызов: NumeratorRequestManager::updateNextSequentialNumber
private function updateNextSequentialNumber($id)
{
	$sequenceConfig = $this->request->getPost(SequentNumberGenerator::getType());
	$result = new Result();
	if ($sequenceConfig !== null && is_array($sequenceConfig)
		&& array_key_exists('nextNumberForSequence', $sequenceConfig) && $sequenceConfig['nextNumberForSequence'])
	{
		$nextNumber = $sequenceConfig['nextNumberForSequence'];
		if (is_numeric($nextNumber))
		{
			$sequence = NumeratorTable::query()
				->registerRuntimeField('',
					new ReferenceField(
						'ref',
						NumeratorSequenceTable::class,
						['=this.ID' => 'ref.NUMERATOR_ID']
					)
				)
				->addSelect(('ID'))
				->addSelect('ref.NEXT_NUMBER', 'NEXT_NUMBER')
				->addSelect('ref.TEXT_KEY', 'TEXT_KEY')
				->where('ID', $id)
				->exec()
				->fetchAll();

			if ($sequence && count($sequence) == 1)
			{
				$numerator = Numerator::load($id);
				if ($numerator)
				{
					$res = $numerator->setNextSequentialNumber($nextNumber, $sequence[0]['NEXT_NUMBER'], $sequence[0]['TEXT_KEY']);
					if (!$res->isSuccess())
					{
						$errors = $res->getErrors();
						return $result->addError($errors[0]);
					}
				}
			}
		}
		else
		{
			return $result->addError(new Error(Loc::getMessage('MAIN_NUMERATOR_EDIT_ERROR_NUMBER_NOT_NUMERIC')));
		}
	}
	return $result;
}