Сбилась нумерация в 1С: как восстановить порядок номеров
Содержание
Первым делом проверьте три вещи: периодичность нумерации (в типовых конфигурациях номер сбрасывается 1 января — это норма, а не сбой), префикс организации и префикс информационной базы. В 90% обращений «сбилась нумерация» дело именно в них, а не в повреждении базы.
Дальше возможны два сценария. Если номера идут не по порядку, задваиваются или вышли за допустимую длину — нужна перенумерация. Если же номер просто начался заново с единицы в новом году или появились «дыры» после удаления документов — чаще всего исправлять нечего, так и задумано. Ниже разберём, как отличить одно от другого и привести нумерацию в порядок, не сломав учёт.
Из-за чего ломается порядок номеров
Номер документа в 1С состоит из трёх частей: префикс информационной базы + префикс организации + собственно порядковый номер. Платформа присваивает номер автоматически при записи, если поле номера пустое.
Разберём на примере. Номер ЦБ00-000123 читается так: ЦБ — префикс организации (здесь «Центральная база»), 00 — префикс информационной базы (пустой обмен, поэтому нули), 000123 — порядковый номер с ведущими нулями под заданную длину. Когда порядок номеров выглядит странно, почти всегда «виновата» одна из этих трёх частей, а не повреждение данных.
Самые частые причины, по которым нумерация «уезжает»:
- 📅 Смена года. Для большинства документов периодичность номера — «в пределах года». 1 января счёт обнуляется, и первый документ снова получает номер 1. Это штатное поведение.
- 🏢 Несколько организаций в одной базе. Если у организаций одинаковый или пустой префикс, их номера пересекаются и выглядят как дубли.
- 🔢 Исчерпана длина номера. Когда разрядность закончилась (например, дошли до
99999), платформа начинает нумеровать некорректно. - 🗑 Удаление документов. После пометки на удаление и последующего удаления в последовательности остаются пропуски. Освободившиеся номера повторно не выдаются.
- 🔁 Обмен данными (РИБ, синхронизация). В узлах распределённой базы номера расходятся, если префиксы ИБ не настроены.
- ✍️ Ручной ввод номера. Кто-то вбил номер руками, и автонумерация с этого места сбилась.
Прежде чем что-то исправлять, определите, с каким именно симптомом вы имеете дело: пропуски, дубли, сброс с нового года или выход за длину. Лечение у них разное.
С чего начать: префиксы в режиме «Предприятие»
Большинство проблем закрывается без конфигуратора — правильной настройкой префиксов.
Префикс организации. Откройте карточку организации в разделе Главное → Организации (в УТ 11 и ERP — НСИ и администрирование → Организации). Поле префикса обычно состоит из одного-двух символов. Задайте каждой организации свой уникальный префикс — так их номера перестанут пересекаться.
Префикс информационной базы. Он нужен, когда баз несколько и они обмениваются данными. Настройка живёт в разделе Администрирование → Синхронизация данных — задаётся при включении обмена. В одиночной базе без синхронизации его обычно оставляют пустым.
Смена префикса влияет только на новые документы. Уже записанные документы свой номер не меняют. Чтобы перенумеровать старые, понадобится отдельная процедура — о ней ниже.
Проверьте, что получилось: откройте журнал документов, отсортируйте по дате и номеру и посмотрите, идут ли новые документы по порядку. Если да — для будущих документов проблема решена.
Есть нюанс с символами в префиксе. Если тип номера у документа числовой, буквы в префикс поставить нельзя — только цифры. Для буквенных префиксов (ЦБ, ОП) тип номера должен быть строковым; в типовых конфигурациях он такой и есть, но при доработках это иногда меняют и получают неожиданный результат.
Пустой или одинаковый префикс — самая частая причина мнимых «дублей» в базе с несколькими организациями. Разные префиксы решают проблему раз и навсегда, без правки конфигуратора.
Как устроена нумерация: настройки в конфигураторе
Если менять нужно саму механику — периодичность, длину, проверку уникальности — это делается только в конфигураторе. В типовой конфигурации на поддержке сначала снимается запрет на изменения или используется расширение конфигурации.
Откройте свойства нужного документа в дереве метаданных. За нумерацию отвечают:
| Свойство | Что задаёт | Типовое значение |
|---|---|---|
| Периодичность номера | Когда счёт сбрасывается | В пределах года |
| Длина номера | Разрядность порядковой части | 6–11 знаков |
| Тип номера | Числовой или строковый | Строка |
| Проверка уникальности | Запрещать ли повтор номера | Включена |
Чтобы номер не обнулялся каждый год и шёл сквозной нумерацией, периодичность меняют на «Непериодический». Если номера упёрлись в потолок разрядности — увеличивают длину номера.
Изменение этих свойств меняет структуру конфигурации. Для сохранения потребуется монопольный доступ к базе (обновление структуры БД выполняется монопольно). Делайте это, когда в базе никто не работает, и обязательно с резервной копией.
Если в базе используется объект «Нумератор» (один счётчик на несколько видов документов), настройки берутся из него, а не из самого документа. Проверьте в свойствах документа, назначен ли ему нумератор.
Перенумерация документов штатными средствами
Задать новые номера уже существующим документам сложнее, чем кажется: в типовых конфигурациях поле номера в форме документа обычно заблокировано для прямого редактирования. Есть три рабочих подхода.
1. Пустой номер + перезапись. Если очистить номер у документа и записать его, платформа присвоит следующий свободный номер по текущим настройкам. На практике номер руками недоступен, поэтому массово это делают обработкой.
2. Обработка перенумерации. Самый распространённый способ для диапазона документов — внешняя обработка «Перенумерация документов». Она перебирает документы за период, очищает номер и присваивает заново по порядку. Такие обработки входят в типовые комплекты инструментов администратора базы.
3. Небольшой код в обработке. Для разового исправления подойдёт обработка с перебором документов:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг
|ГДЕ Дата МЕЖДУ &Начало И &Конец
|УПОРЯДОЧИТЬ ПО Дата, МоментВремени";
Запрос.УстановитьПараметр("Начало", НачалоГода(ТекущаяДата()));
Запрос.УстановитьПараметр("Конец", КонецГода(ТекущаяДата()));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Номер = ""; // очистили — платформа присвоит следующий свободный
Объект.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла;
Массовая перезапись документов — рискованная операция. В режиме Запись движения не пересоздаются, но ошибка в коде или случайный режим Проведение переформируют их и могут задеть закрытый период. Делайте перенумерацию на копии базы и всегда начинайте с резервной копии.
Обратите внимание на порядок обхода: документы перебираются по дате и моменту времени, а не в случайном порядке, иначе номера снова лягут вперемешку.
Ещё несколько практических моментов перед запуском перенумерации:
- 👥 Монопольность не обязательна, но желательна. Пока обработка идёт, пользователи не должны создавать и перепроводить документы того же вида — иначе новые записи вклинятся в середину диапазона. Проще выполнить в нерабочее время.
- 📦 Проведённые и непроведённые документы. Режим
РежимЗаписиДокумента.Записьсохраняет документ без перепроведения и не трогает движения — это безопаснее для закрытых периодов, чемПроведение. - ⏱ Большой объём. На десятках тысяч документов перебор идёт долго. Разбейте период на части (помесячно) и перенумеруйте по шагам, контролируя результат после каждого.
Правка через запросы и SQL: когда и почему не стоит
Отдельно про идею «поправить номера напрямую». Язык запросов 1С — только на чтение. Оператор ВЫБРАТЬ данные не меняет; UPDATE, INSERT и DELETE в консоли запросов 1С недоступны в принципе. Поэтому исправить нумерацию «одним запросом» в 1С нельзя.
Остаётся прямой SQL к таблицам СУБД (MS SQL или PostgreSQL). Технически поле номера лежит в таблице документа (_Document… с полем вида _Number), и его можно переписать запросом к базе. Но этого делать категорически не рекомендуется:
- 🚫 имена таблиц и полей платформа генерирует сама, они не читаемы и могут измениться при обновлении;
- 🚫 прямое изменение в обход платформы ломает кэш, итоги регистров и проверку уникальности;
- 🚫 нарушается целостность и снимается поддержка — официально такие правки не поддерживаются.
Правильный инструмент для массовой правки — объектная модель (обработка выше), а не SQL. SQL-доступ к боевой базе 1С оставляйте только для диагностики: прочитать, посчитать, найти дубли — да; переписать номер в таблице — нет. Любая запись мимо платформы рано или поздно аукнется расхождением данных, которое искать будет дороже, чем аккуратная перенумерация штатными средствами.
Дубли и пропуски: как привести в порядок
Пропуски номеров. Чаще всего это следствие удалённых или перепроведённых задним числом документов. Для бухгалтерского и налогового учёта пропуск в нумерации нарушением не является — важна корректность сумм и проводок, а не непрерывность счёта. Специально «затыкать дыры» не нужно. Если же сквозная нумерация принципиальна (например, для бланков строгой отчётности), применяйте перенумерацию диапазона.
Дубли номеров. Это уже проблема: два документа с одинаковым номером мешают поиску и выгрузке. Алгоритм:
- Найдите дубли — отсортируйте журнал по номеру или постройте отчёт по реквизиту «Номер».
- Определите причину — чаще это совпадающие префиксы разных организаций или отключённая проверка уникальности.
- Разведите префиксы организаций, чтобы новые документы не пересекались.
- Перенумеруйте пересекающийся диапазон обработкой, обходя документы по дате.
- Включите проверку уникальности в конфигураторе, если она была снята.
Не исправляйте дубли, меняя номер «на глаз» в одном документе: без разведённых префиксов они появятся снова при следующей записи.
Если нумерация завязана на нумератор, помните: он общий для нескольких видов документов, и правка затронет их все сразу. Проверьте это до перенумерации.
Как не допустить повторного сбоя
Профилактика проще лечения. Базовые правила, которые закрывают большинство будущих проблем с нумерацией:
Полезно раз в год, перед началом нового периода, проверять две цифры: сколько документов каждого вида создаётся за год и какая длина номера задана. Если за год набегает, скажем, 60–70 тысяч реализаций, а длина номера шесть знаков, запаса хватит надолго; если же база растёт быстрее, длину лучше увеличить заранее, а не в момент, когда номера упрутся в потолок и начнут вести себя непредсказуемо.
Отдельно про смену года: заранее решите, устраивает ли вас обнуление номеров с 1 января. Для большинства организаций это нормально и даже удобно — номер показывает год. Если же нужна непрерывная нумерация через годы, настройте периодичность «Непериодический» один раз, до начала нового периода, а не постфактум.
И держите под рукой свежую резервную копию. Любая массовая операция с номерами — это перезапись документов, а значит, и движений. Копия превращает рискованную правку в обратимую.