В процессе работы в программах 1С пользователи нередко сталкиваются с ситуацией, когда новый документ внезапно получает номер с дробной частью — например, БП00000013/1, БП00000013/2 и далее. Физическое удаление или пометка на удаление таких документов не решают проблему: следующий созданный документ все равно упорно получает номер со следующим значением суффикса (например, БП00000013/5). Разберем, почему возникает такое поведение платформы и как восстановить стандартную последовательную нумерацию.
Проанализируем механику работы автонумератора платформы «1С:Предприятие». Появление дроби — это не программный сбой, а штатный защитный алгоритм контроля уникальности номеров:
13 вместо БП00000013) или использовал пробелы/лишние символы, платформа теряет правильный шаблон инкремента и начинает присваивать суффиксы.Рассмотрим штатный способ сброса кешированных номеров в конфигурациях на обычных формах (таких как «1С:Бухгалтерия предприятия 2.0» или «1С:Управление производственным предприятием»). Выполним следующие действия:
Если требуется исправить автонумерацию точечно или на управляемых формах через внешнюю обработку/консоль кода, применим метод глобального контекста ОбновитьНумерациюОбъектов(). Разберем примеры вызова данного метода:
Для сброса счетчиков только по конкретному документу (например, по авансовым отчетам):
ОбновитьНумерациюОбъектов(Метаданные.Документы.АвансовыйОтчет);
Для полного обновления нумераторов по всей информационной базе без указания конкретного типа объектов:
ОбновитьНумерациюОбъектов();
Данная процедура принудительно очищает внутренний кеш номеров платформы и заново определяет максимальный номер на основе реально существующих в информационной базе документов.
Посмотрим, что делать, если после обновления нумерации дробные номера продолжают появляться. Это означает, что в базе физически присутствует документ, мешающий корректному автоинкременту. Разберем алгоритм поиска по шагам:
АвансовыйОтчет за весь текущий год.БП00000013), либо удалим ненужные помеченные объекты через Операции → Удаление помеченных объектов.ОбновитьНумерациюОбъектов().В клиент-серверном варианте базы данных (SQL) в случае зависания счетчиков дополнительно помогает перезапуск службы кластера серверов 1C:Enterprise Server или перезапуск рабочего процесса rphost.