Механизм автонумерации имеет возможности по восстановлению максимального номера после исправления или удаления неверно введенного максимального номера. Например, имеем текущий максимальный номер АА001, пользователь при вводе документа ошибся и явно ввел номер ААБСД. После этого автонумератор запомнил введенный номер и перестал выдавать корректные номера, все время выдавая номер ААБСД. Пользователь исправил неправильно введенный номер документа на АА002. Поcле этого автонумератор стал выдавать правильные номера - АА003, АА004... Альтернативой исправлению может быть удаление объекта с неверно введенным номером.
Данная возможность избавляет пользователя от проблем, связанных с остановкой сервера или вызовом функции ОбновитьНумерациюОбъектов, которые были необходимы ранее для восстановления нумерации объектов.
Алгоритм работы восстановления нумерации следующий:
После изменения/удаления номера определенного объекта (в момент записи/удаления) автонумератор определяет, нужно ли сбрасывать максимальный номер.
Номер нужно сбрасывать, если номер, который изменили/удалили, являлся максимальным записанным номером по данному пространству номеров и не открыта ни одна транзакция, получившая или установившая номера по данному пространству номеров.
Если номер нужно сбрасывать, то автонумератор обновляет для данного пространства номеров нумерацию объектов, получая тем самым номер, который стал максимальным после изменения/удаления текущего номера. После обновления все возвращаемые для переиспользования номера больше максимального игнорируются.
Если после ошибочно введенного номера были получены и записаны другие номера, то нужно исправить/удалить их все (включая ошибочно введенный). После этого нумерация по данному пространству номеров будет восстановлена.