При работе в программах 1С пользователи иногда сталкиваются с ситуацией, когда при попытке создать новый документ вылетает ошибка: «Значение "..." поля "Номер" неуникально». Чаще всего эта проблема возникает после ручного вмешательства в автонумерацию документов, когда стандартный формат номера (например, 0000-000047) заменяется на номер со спецсимволами или дробной частью (например, 0000-0047/0).
Разберем подробнее, почему происходит подобный сбой и как восстановить правильную автоматическую нумерацию в информационной базе.
Проанализируем механику работы автонумератора платформы 1С:Предприятие. В конфигурации «1С:Бухгалтерия предприятия 3.0» поле Номер является строковым и имеет фиксированную длину — 11 символов, включающих в себя префикс организации/базы и числовой счетчик.
Алгоритм платформы ищет наибольшее строковое значение в базе и прибавляет единицу к числовой части, находящейся в самом конце строки. Когда пользователь вручную вводит символ слеша (/) с цифрой на конце (например, /9), происходят следующие сбои:
/10. Однако добавление нового разряда нарушает допустимую длину строки или не может быть корректно обработано автонумератором.0000-0047/9) и при создании любого нового документа пытается снова и снова подставить его, что приводит к ошибке неуникальности.Рассмотрим пошагово порядок действий для восстановления штатного порядка нумерации.
Номер, чтобы выявить все документы, в которых нумерация была изменена вручную или содержит спецсимволы (дробные части через слеш).0000-0047/9 на 0000-000047).После того как вручную измененные номера исправлены на корректные, необходимо дать команде платформы сбросить внутренние счетчики и пересчитать максимальный номер. Для этого в платформе 1С предусмотрена специализированная процедура ОбновитьНумерациюОбъектов.
Посмотрим на пример кода, который можно выполнить через внешнюю обработку или встроенную консоль кода:
ОбновитьНумерациюОбъектов(Метаданные.Документы.СчетНаОплатуПокупателю);
Данный метод принудительно обновляет нумератор для указанного метаданного, считывая актуальные максимальные номера из базы данных.
Если после исправления номеров и вызова процедуры автонумератор все еще подставляет старый ошибочный номер, причина заключается в серверном кешировании.
Чтобы избежать повторения описанной ситуации в будущем, проанализируем доступные административные и штатные средства конфигурации: