При активном документообороте в информационных базах 1С пользователи и разработчики нередко сталкиваются с ситуацией, когда при записи нового документа возникает ошибка контроля уникальности или система сообщает, что номер достиг своего предельного значения (например, 99999). В результате создание новых документов полностью блокируется. Разберем подробно, почему возникает эта проблема, где настраивается длина номера и как правильно восстановить штатную автонумерацию.
Прежде чем вносить изменения в конфигурацию, проанализируем основные факторы, приводящие к блокировке создания новых документов:
ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер) привязаны к единому нумератору, изменение свойств нумерации в самом документе блокируется или игнорируется платформой.Если при изменении длины номера на вкладке «Нумерация» конкретного документа ничего не меняется, скорее всего, документ привязан к общему нумератору. Разберем по шагам, как это проверить:
Важно: При использовании общего нумератора длина номера изменится автоматически для всех входящих в него видов документов.
После изменения длины номера в конфигураторе или ручной правки ошибочных номеров платформа 1С может продолжать использовать старый закешированный счетчик. Выясним причину: сервер 1С:Предприятия хранит текущее состояние автонумератора до момента принудительного сброса.
Чтобы заставить платформу заново пересчитать максимальный существующий номер, выполним программный метод ОбновитьНумерациюОбъектов() во внешней обработке или через консоль кода:
// Принудительное обновление нумерации для конкретного вида документа
ОбновитьНумерациюОбъектов(Метаданные.Документы.ПриходныйКассовыйОрдер);
// Либо полное обновление нумерации по всей информационной базе
ОбновитьНумерациюОбъектов();
Поскольку реквизит Номер имеет строковый тип данных, платформа выполняет сравнение посимвольно слева направо по правилам ASCII-сортировки. Если в базе присутствуют документы, номер которых короче установленной длины и не дополнен ведущими нулями, автонумерация будет давать сбой.
Рассмотрим порядок действий для исправления номеров:
В типовых конфигурациях (таких как «1С:Бухгалтерия предприятия») за генерацию номера отвечает БСП через подписки на события УстановитьНомерДокумента и общие модули ПрефиксацияОбъектовСобытия и ПрефиксацияОбъектовПереопределяемый. Шаблон номера формируется по структуре: [ПрефиксОрганизации][ПрефиксУзла]-[Номер].
Если увеличение разрядности метаданных временно невозможно, проблему переполнения диапазона можно оперативно решить следующими методами: