- Модуль: 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;
}