Номера документов и коды справочников в 1С 8.3: сброс счётчика, правка и перенумерация
Содержание
Обновить нумерацию объектов в 1С 8.3 можно тремя путями: исправить номер одного документа прямо в его форме, заставить платформу пересчитать счётчик методом ОбновитьНумерациюОбъектов() или перенумеровать пачку документов внешней обработкой. Какой путь нужен, зависит от симптома: один дубль, сбитый счётчик после загрузки данных или «некрасивая» нумерация за целый период.
Типичная боль выглядит так: в середине месяца новая реализация вдруг получает номер 0000-000001, а при записи вылетает Значение поля "Номер" не уникально. Причина почти всегда в одном из трёх мест: в префиксе, в счётчике платформы или в загруженных данных — и каждое чинится без потери проводок.
Когда нумерацию документов в 1С действительно нужно обновлять
Не каждая «странная» нумерация — ошибка. Сначала отделите норму от сбоя.
✅ Это норма, ничего делать не нужно:
- 📅 С 1 января номера начались с единицы. У большинства документов в типовых конфигурациях уникальность номера задана в пределах года, и счётчик сбрасывается сам.
- 🕳️ В нумерации есть пропуски. Номер занимается при первой записи. Записали черновик, потом удалили — номер пропал. Платформа дыры не заполняет.
- 🏢 У двух организаций одинаковые порядковые части. Номер включает префикс организации, поэтому
БП00-000015иТД00-000015— разные номера.
❌ Это сбой, нумерацию нужно обновить:
- 🔁 Новые документы получают номера, которые уже заняты, и не записываются.
- ⬇️ После загрузки данных (из другой базы, из файла, по обмену) счётчик «откатился» и выдаёт номера меньше существующих.
- 🔤 Сменился префикс базы или организации, и новые документы пошли с другим префиксом посреди года.
- 🧩 Две базы объединили в одну, и номера перемешались.
- 📄 Документ создан задним числом, и бухгалтеру нужен «правильный» номер по порядку дат.
Подготовка: что проверить до изменения номеров
Номер в 1С — это просто реквизит. Движения по регистрам и проводки связаны с документом по внутренней ссылке, а не по номеру. Поэтому смена номера не ломает учёт. Ломает она другое — связь с внешним миром.
| Что проверить | Почему это важно |
|---|---|
| Выданы ли документы контрагентам | Покупатель уже принял счёт-фактуру № 15. Если в базе он станет № 12, сверка и встречная проверка разойдутся |
| Отправлены ли документы по ЭДО | Подписанный электронный документ не меняется. Номер в базе и в подписанном файле будет разным |
| Попали ли счета-фактуры в сданную декларацию по НДС | Книга продаж формируется по текущим номерам. После перенумерации она перестанет совпадать с уже сданной |
| Ссылаются ли на номер другие документы | Входящий номер поставщика, номер договора в назначении платежа хранятся строкой и сами не обновятся |
| Есть ли обмен с другой базой | Перенумерованные документы уйдут в другую базу с новыми номерами, а там могут быть свои |
Закон не требует сплошной нумерации без пропусков. Налоговый кодекс (ст. 169) требует, чтобы у счёта-фактуры был порядковый номер. В перечне обязательных реквизитов первичного документа (ст. 9 закона № 402-ФЗ) номера нет вовсе. Так что «закрывать дыры» в уже отчитанных периодах обычно незачем.
Перед массовой перенумерацией сделайте резервную копию базы. В файловой базе — выгрузка .dt через Конфигуратор или копия каталога при закрытой базе. В клиент-серверной — бэкап средствами СУБД.
Монопольный режим для смены номеров не нужен. Но массовую обработку лучше запускать вне рабочего времени: пока она идёт, пользователи могут создавать документы того же вида и получать номера, которые обработка тут же займёт.
Способы обновить нумерацию в 1С 8.3: какой выбрать
| Способ | Когда подходит | Риски |
|---|---|---|
| Ручная правка номера в форме документа | Один-два документа, дубль, документ задним числом | Почти нет, если номер не выдан наружу |
| Проверка префиксов организации и базы | Новые документы идут с чужим префиксом | Меняет номера только новых документов |
ОбновитьНумерациюОбъектов() | Счётчик выдаёт занятые номера после загрузки или обмена | Существующие номера не трогает |
| Внешняя обработка перенумерации | Нужно переписать номера за период по порядку дат | Расхождение с выданными документами, нужна резервная копия |
Ручная правка номера документа
- Откройте документ.
- Щёлкните в поле
Номерв шапке. - Типовые конфигурации на БСП предупреждают, что номер присваивается автоматически. Подтвердите ручное редактирование.
- Введите номер целиком, с префиксом и ведущими нулями, в том же формате, что у соседних документов: например,
0000-000127. - Нажмите
Записать. Если документ проведён, используйтеПровести и закрыть— перепроведение безопасно, номер на движения не влияет.
💡 Сохраняйте формат. Номер — строка, и 127 без нулей встанет в списке не на своё место при сортировке по номеру.
Префиксы: откуда берутся буквы в номере
В БП 3.0, УТ 11 и других конфигурациях на БСП номер собирается из частей: префикс организации, префикс информационной базы, дефис и порядковая часть. Если сменить любой префикс, счётчик для новой комбинации начнётся с единицы.
- 🏢 Префикс организации — в карточке организации:
Главное → Организации, открыть организацию, полеПрефикс. - 🗄️ Префикс базы задаётся при настройке синхронизации данных, в разделе
Администрирование. Он нужен, чтобы номера из разных баз не совпадали при обмене.
Если префикс поменяли по ошибке, верните прежний. Документы, созданные с новым префиксом, поправьте вручную или обработкой.
Коды справочников: как обновить нумерацию элементов
У справочников вместо номера — код. Логика та же, но параметры другие. Они задаются в Конфигураторе, в свойствах справочника на закладке Данные:
- 🔢 Тип кода — строка или число. Строковый код может содержать префикс, числовой — нет.
- 📏 Длина кода — сколько символов помещается.
- 🌳 Серии кодов — уникальность во всём справочнике, в пределах подчинения (внутри группы) или в пределах владельца.
- 🛡️ Контроль уникальности — запрещает записать два элемента с одним кодом.
- ⚙️ Автонумерация — платформа присваивает код при первой записи.
Серии кодов объясняют частую жалобу «коды в справочнике повторяются». Если серия задана в пределах подчинения, у каждой группы свой счётчик, и элемент 000000001 есть в каждой папке. Это не сбой.
Поменять код одного элемента можно в его карточке, если поле Код выведено на форму. Во многих справочниках БП 3.0 оно скрыто или закрыто для правки. Тогда код меняют внешней обработкой — так же, как номера документов в разделе ниже, только вместо УстановитьНовыйНомер() используется метод УстановитьНовыйКод(), а вместо реквизита Номер — Код.
Код справочника иногда используется вне 1С: в прайс-листах, на сайте, в выгрузке для маркетплейса. Перед сменой кодов узнайте, не завязан ли на них обмен.
Автонумерация и счётчики: метод ОбновитьНумерациюОбъектов
Автонумерация работает так: при первой записи платформа берёт последний занятый номер в периоде и прибавляет единицу. Для ускорения она хранит сведения о последних номерах. Если данные пишут в обход обычного порядка, эти сведения расходятся с реальностью.
Типичные причины сбоя счётчика:
- 📥 загрузка документов из файла или другой базы в режиме обмена данными;
- 🔄 перенос данных обработками, которые сами задают номера;
- 🗄️ восстановление части данных или правки прямо в СУБД;
- ✂️ ручная смена номера на «большой» или «маленький» номер в середине периода.
Чтобы обновить нумерацию объектов в 1С 8.3 после такого сбоя, вызовите глобальный метод ОбновитьНумерациюОбъектов(). Он заставляет платформу заново определить текущие номера. Существующие документы не меняются, исправляется только то, какой номер получит следующий новый объект.
Метод вызывают из кода на сервере. Удобнее всего — из простой внешней обработки:
- В Конфигураторе:
Файл → Новый → Внешняя обработка. - Добавьте форму, на ней — команду и кнопку.
- В модуле формы вставьте код ниже.
- Сохраните файл
.epf, откройте его в режиме 1С:Предприятие черезФайл → Открытьи нажмите кнопку.
&НаКлиенте
Процедура ОбновитьСчетчики(Команда)
ОбновитьСчетчикиНаСервере();
ПоказатьПредупреждение(, "Нумерация обновлена");
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОбновитьСчетчикиНаСервере()
// Один вид документа
ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);
// Для всех объектов базы вызовите метод без параметра:
// ОбновитьНумерациюОбъектов();
КонецПроцедуры
Имя РеализацияТоваровУслуг замените на имя нужного документа или справочника из дерева конфигурации. Для справочника передайте Метаданные.Справочники.<Имя>.
💡 Открыть внешнюю обработку может пользователь с полными правами. Остальным нужна роль на интерактивное открытие внешних обработок, а в БП 3.0 программа ещё и попросит подтвердить запуск файла.
Массовая перенумерация документов за период
Когда счётчик исправлен, но номера за период нужно переписать по порядку дат, пишется своя обработка. Готовой кнопки «перенумеровать всё» в типовых конфигурациях 8.3 нет.
Логика в два прохода. Сначала каждому документу ставится временный уникальный номер, чтобы не столкнуться с уже занятыми. Затем — итоговые номера по порядку. Запись идёт в режиме обмена данными: документ не перепроводится, движения не трогаются.
&НаСервереБезКонтекста
Процедура ПеренумероватьНаСервере(НачалоПериода, КонецПериода, Префикс)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Док.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Док
|ГДЕ
| Док.Дата МЕЖДУ &Начало И &Конец
|
|УПОРЯДОЧИТЬ ПО
| Док.Дата,
| Док.Ссылка";
Запрос.УстановитьПараметр("Начало", НачалоДня(НачалоПериода));
Запрос.УстановитьПараметр("Конец", КонецДня(КонецПериода));
Список = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
НачатьТранзакцию();
Попытка
// Проход 1: временные номера
Сч = 0;
Для Каждого Ссылка Из Список Цикл
Сч = Сч + 1;
Объект = Ссылка.ПолучитьОбъект();
Объект.Номер = "Т" + Формат(Сч, "ЧГ=0");
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
КонецЦикла;
// Проход 2: итоговые номера по порядку дат
Сч = 0;
Для Каждого Ссылка Из Список Цикл
Сч = Сч + 1;
Объект = Ссылка.ПолучитьОбъект();
Объект.Номер = Префикс + Формат(Сч, "ЧЦ=6; ЧВН=; ЧГ=0");
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);
КонецПроцедуры
Что важно в этом коде:
- 🔤
Префикспередаётся целиком, вместе с дефисом: например,"0000-". Шесть цифр после него дают номер0000-000001, как в типовой БП 3.0. Длину префикса и порядковой части сверьте с уже существующими номерами. - 📅 Период берите внутри одного периода уникальности номера — например, внутри года. Иначе номера разных лет перемешаются.
- 🏢 Если в базе несколько организаций, добавьте в запрос отбор по организации и вызывайте обработку для каждой со своим префиксом.
- 🔒 Транзакция откатит всё целиком, если хоть один документ не запишется. На тысячах документов разбейте период на месяцы.
- 🔁 Последняя строка заново определяет счётчик, чтобы следующий новый документ получил номер после последнего перенумерованного.
Режим ОбменДанными.Загрузка = Истина отключает обработчики записи типовой конфигурации, в том числе её проверки. Поэтому обработку сначала запускайте на копии базы и сверяйте результат.
Ошибки при обновлении нумерации и как их снять
Совпадение номеров у документа, помеченного на удаление, — частый подвох. Пометка не освобождает номер. Освобождает только удаление помеченных объектов.
Что сделать после перенумерации
Документы переписаны — теперь убедитесь, что учёт и внешние связи в порядке.
Если база обменивается с другой, первая же синхронизация отправит новые номера туда. Убедитесь, что во второй базе нет документов с такими номерами в том же периоде, иначе получите дубли уже там.
Частые вопросы
Сбрасывается ли нумерация документов в 1С 8.3 с нового года?
Можно ли сделать сквозную нумерацию без сброса по годам?
Изменятся ли проводки, если поменять номер документа?
Нужно ли закрывать пропуски в нумерации счетов-фактур?
Почему номер появляется только после записи документа?
Источники
- Налоговый кодекс РФ, статья 169 «Счёт-фактура»
- Федеральный закон от 06.12.2011 № 402-ФЗ «О бухгалтерском учёте», статья 9