Администрирование · 12 мин
Как восстановить автоматическую нумерацию в 1С
Как восстановить автоматическую нумерацию документов в 1С: причины сбоев, ручное и автоматическое восстановление, обновление нумерации и профилактика ошибок.
Автоматическая нумерация документов в 1С сбивается чаще всего из-за ручного изменения номера, удаления документов, обмена данными между базами или нештатного завершения работы. Внешне это проявляется одинаково: новый документ получает номер с пропуском, дублем или неожиданным префиксом, а при проведении появляется сообщение о нарушении уникальности.
Хорошая новость в том, что механизм нумерации в 1С устроен просто: платформа хранит последние выданные номера в служебных регистрах и при создании документа предлагает следующий. Если этот счётчик «отстал» от реальности или, наоборот, ушёл вперёд, его можно скорректировать штатными средствами без программирования.
Важно понимать, что сбой нумерации — это симптом, а не самостоятельная болезнь. Прежде чем чинить счётчик, стоит выяснить причину: если нумерацию ломает обмен данными или внешняя обработка, проблема вернётся после первого же сеанса синхронизации.
Как устроена нумерация в 1С и почему она сбивается
При записи нового документа платформа обращается к служебной информации о нумераторе объекта и выдаёт следующий номер. Номер хранится как строка, поэтому «следующий» определяется с учётом префиксов, лидирующих нулей и длины номера. Именно строковая природа номера — источник большинства недоразумений: для платформы «9» больше, чем «10», если сравнение идёт посимвольно без учёта длины.
Типовые причины сбоев выглядят так. Пользователь вручную вписал номер «999999» — и следующий документ пытается получить «1000000», выходя за допустимую длину. Документ с максимальным номером удалили, а счётчик остался на месте — появляются «дыры». В базу загрузили документы из другой системы с чужими префиксами — нумератор ориентируется на чужой максимум. Реже встречаются повреждения служебных таблиц после аварийного завершения или восстановления из копии.
Проверьте, нет ли документов с большими номерами, созданных вручную или загруженных обменом
Найдите документ с этим номером — возможно, он помечен на удаление или создан в другой организации
Проверьте настройки префиксации и обмен данными
Пропуски сами по себе не критичны; проверьте, не нарушена ли хронология
Подготовка перед восстановлением: резервная копия и диагностика
Любые действия с нумерацией начинайте с резервной копии. В файловой базе достаточно скопировать каталог с файлом 1Cv8.1CD или сделать выгрузку через конфигуратор («Администрирование» → «Выгрузить информационную базу»). В клиент-серверном варианте используйте средства СУБД или ту же выгрузку в dt. Правка номеров — обратимая операция, но только если есть к чему откатываться.
Далее определите реальный «правильный» номер. Откройте журнал документов нужного вида, отсортируйте по номеру и найдите последний корректный документ за текущий период (нумерация обычно периодическая — годовая). Исключите из анализа документы с чужими префиксами, загруженные обменом, и явно ошибочные ручные номера.
Заодно проверьте, не действует ли в базе несколько нумераторов: в типовых конфигурациях документы одного вида могут нумероваться в разрезе организаций или подразделений. В этом случае «сбой» может оказаться нормой — у каждой организации своя последовательность.
Способ 1: ручное восстановление через исправление номера
Самый простой и безопасный метод подходит, когда сбой точечный. Создайте новый документ проблемного вида и посмотрите, какой номер предлагает программа. Если он неверный, исправьте его вручную на правильный следующий номер и запишите документ. При записи платформа обновит счётчик: последующие документы продолжат нумерацию уже от исправленного значения.
Если поле «Номер» недоступно для редактирования, включите возможность ручного изменения. В типовых конфигурациях на управляемых формах это делается через меню «Ещё» → «Изменить форму» либо команду «Редактировать номер» (в некоторых конфигурациях доступна по кнопке рядом с полем). В старых интерфейсах помогает команда «Действия» → «Изменить» либо включение режима технолога.
Учтите ограничение: если при записи появляется ошибка «Номер не уникален», значит, документ с таким номером уже существует. Найдите его через журнал — возможно, это помеченный на удаление дубль, который стоит удалить окончательно, либо документ другого периода или организации, и тогда конфликта на самом деле нет.
- 1Сделайте резервную копию базы
- 2Откройте журнал документов и определите последний корректный номер за период
- 3Создайте новый документ и посмотрите предлагаемый номер
- 4Исправьте номер вручную на правильный следующий и запишите документ
- 5Создайте ещё один документ и убедитесь, что номер продолжился автоматически
Способ 2: обновление нумерации штатными средствами
В ряде типовых конфигураций есть встроенный механизм обновления нумерации. В конфигурациях на БСП (Библиотека стандартных подсистем) при смене номера вручную программа сама предлагает пересчитать последующие номера. Кроме того, в разделах администрирования некоторых решений присутствует сервис «Обновление нумерации объектов» — он проходит по документам выбранного вида и перенумеровывает их по дате, начиная с заданного номера.
Для файловых баз существует подход через конфигуратор: в режиме «Тестирование и исправление» есть опции, затрагивающие служебные таблицы. Однако напрямую «сброса нумераторов» этот инструмент не выполняет — не стоит рассчитывать на него как на универсальное лекарство.
Если штатного сервиса в конфигурации нет, используются внешние обработки перенумерации. Их принцип одинаков: выбирается вид документа, период и начальный номер, обработка сортирует документы по дате и присваивает номера заново. Запускайте такие обработки только на копии сначала и только из источников, которым доверяете.
Способ 3: восстановление нумерации через запрос или код
Когда документов много и ручная правка нереальна, задачу решают программно. Типовой сценарий: запросом выбираются документы нужного вида за период с упорядочиванием по дате и ссылке, затем в транзакции каждому присваивается следующий номер с сохранением префикса и длины. Такой код выполняется через консоль кода или внешнюю обработку под полными правами.
Для сброса самого нумератора в языке 1С есть метод ОбновитьНумерациюОбъектов менеджера вида документов — он пересчитывает служебные данные нумерации по фактическим номерам в базе. Это как раз тот случай, когда счётчик отстал или ушёл вперёд, а сами документы править не нужно. Вызов выглядит примерно так: Документы.РеализацияТоваровУслуг.ОбновитьНумерациюОбъектов().
Документы.РеализацияТоваровУслуг.ОбновитьНумерациюОбъектов();После выполнения метода создайте тестовый документ и проверьте предлагаемый номер. Если он по-прежнему неверен, значит, в базе есть документ с «максимальным» номером, который платформа считает отправной точкой, — найдите его и решите, что с ним делать: исправить, перенести в другой период или удалить.
Особые случаи: префиксы, обмены и несколько организаций
В распределённых базах и при обмене с другими системами нумерация работает с префиксами: каждая база добавляет свой код, чтобы номера не пересекались. Если после обмена нумерация «слетела», проверьте настройки префикса в разделе синхронизации данных и в параметрах информационной базы. Документы, пришедшие с чужим префиксом, не должны влиять на ваш счётчик — если влияют, это повод проверить настройки нумератора.
Нумерация по организациям
В конфигурациях, где ведётся учёт по нескольким организациям, у каждой может быть своя последовательность. Убедитесь, что сравниваете номера внутри одной организации: «дыра» в общем журнале часто оказывается документом соседней организации.
Смена периода нумерации
Большинство нумераторов периодичны — с нового года отсчёт начинается заново. Если в январе документы получают огромные номера, проверьте, не созданы ли документы с датой прошлого или будущего года с ручными номерами: именно они смещают счётчик.
Как выбрать действие
Проверка результата и профилактика повторных сбоев
После восстановления проверьте три вещи: новый документ получает ожидаемый следующий номер; запись не вызывает ошибки уникальности; в журнале нет дублей и неожиданных префиксов за текущий период. Полезно создать и записать два-три тестовых документа подряд, а затем удалить их, если это допустимо по регламенту.
Чтобы проблема не вернулась, ограничьте ручное изменение номеров правами доступа — в типовых конфигурациях это делается через профили групп доступа. Настройте префиксы для всех баз, участвующих в обменах. Раз в период (например, перед сдачей отчётности) проверяйте нумерацию на дубли и пропуски штатными отчётами или экспресс-проверкой ведения учёта, если она есть в конфигурации.
Отдельно отметьте для пользователей правило: удалять проведённые документы нельзя, их нужно отменять или сторнировать. Удаление середины цепочки — самая частая бытовая причина «дыр» и последующих попыток «починить» номер вручную, которые и ломают счётчик.
Что важно запомнить
Сначала найдите причину сбоя и сделайте копию, затем выберите способ: ручная правка для точечных случаев, ОбновитьНумерациюОбъектов — для сбитого счётчика, перенумерация — для массовых ошибок по неотправленным документам. Завершайте работу проверкой на тестовых документах.
Частые вопросы
Почему после удаления документа номер не освобождается?
Платформа не переиспользует номера автоматически: счётчик хранит последнее выданное значение, а не список свободных. Пропуск в нумерации сам по себе не ошибка. Если нужно занять освободившийся номер, исправьте номер у нового документа вручную — дальше отсчёт продолжится от него.
Можно ли восстановить нумерацию без прав администратора?
Ручное исправление номера доступно пользователю с правами на изменение документов, если в конфигурации не запрещено редактирование номера. Обновление нумерации кодом и запуск внешних обработок требуют полных прав или прав администратора.
Ошибка «Номер не уникален» при записи — что делать?
Найдите документ с конфликтующим номером через журнал. Часто это помеченный на удаление дубль — удалите его окончательно через «Удаление помеченных объектов». Если дубль реальный, измените номер одного из документов с учётом правил нумерации.
Сбилась нумерация после обмена с другой базой — в чём причина?
Чаще всего не настроены или совпадают префиксы баз. Проверьте префикс информационной базы в настройках синхронизации и убедитесь, что у каждого узла обмена он уникален. Документы с чужим префиксом не должны влиять на ваш счётчик.
Опасно ли запускать «Тестирование и исправление» для нумерации?
Само по себе тестирование не перенумеровывает документы, но проверять его стоит только на копии и в монопольном режиме. Для восстановления нумерации этот инструмент не предназначен — используйте ОбновитьНумерациюОбъектов или перенумерацию.
Как сделать, чтобы нумерация начиналась с нужного номера в новом году?
Создайте первый документ нового периода и вручную установите нужный стартовый номер, затем запишите. Платформа запомнит его как отправную точку, и последующие документы продолжат отсчёт автоматически.