Почему не началась новая нумерация документов с нового года в 1С и как это исправить?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Многие пользователи 1С сталкиваются с ситуацией, когда с наступлением нового года нумерация документов (например, реализаций или счетов) не начинается с первого номера, а продолжает прошлогоднюю последовательность. Например, вместо ожидаемого номера с единицы система выдает номер 121, продолжая нумерацию от документа с номером 120. Рассмотрим подробнее, почему возникает эта проблема и как вернуть системе правильный отсчет.

Выясним причину проблемы

Проанализируем ситуацию и выделим основные причины, по которым автоматическая нумерация документов дает сбой при смене года:

  1. Создание документов "будущей датой": Частая причина — кто-то из пользователей заранее создал или скопировал документ, установив ему дату нового года, и система присвоила ему следующий по порядку номер из старого года. После этого все последующие документы в новом году будут отталкиваться от этого "ошибочного" максимального номера.
  2. Сбитая периодичность в конфигураторе: В свойствах самого документа в дереве метаданных свойство Периодичность может быть ошибочно установлено в значение "Весь период", а не "В пределах года". Если это так, платформа физически не будет обнулять нумератор 1 января.
  3. Нарушение формата и потеря ведущих нулей: При ручном редактировании номеров пользователи часто стирают ведущие нули (например, пишут "УТТТ120" вместо "УТТТ0000120"). Платформа использует строковое сравнение, и номер без нулей ломает внутреннюю сортировку. В результате механизм автонумерации не может корректно вычислить следующее максимальное значение.

Проанализируем влияние длины номера и префиксов

Разберем по шагам, как платформа 1С воспринимает длину номера. Длина строкового номера жестко задана в конфигураторе. Платформа ожидает, что всё свободное пространство между текстовым префиксом и значащими цифрами будет заполнено нулями.

Если в базе использовались номера из 11 символов (например, "УТТТ0000120"), а вы попытаетесь искусственно начать новую нумерацию, введя номер из 10 символов ("ЯУТТТ00001") или из 9 символов ("Я00000001"), система не сможет корректно сопоставить эти пространства номеров. При строковой сортировке более короткие номера могут оказаться "больше" или "меньше" длинных вопреки математической логике, что приведет к отсечению цифровой части и сбоям при инкрементировании (увеличении номера на единицу).

Важно: При изменении префикса для системы создается совершенно новое пространство номеров. Но общая длина поля должна оставаться неизменной, а нули должны занимать все пустые позиции.

Рассмотрим способы решения проблемы

Существует несколько способов восстановить правильную нумерацию. Посмотрим на пример каждого из них.

Способ 1. Ручное исправление и перезапуск сервера

Текущая "отметка нумерации" (последний выданный номер) сохраняется в оперативной памяти сервера приложений 1С (для серверных баз) или до закрытия последнего сеанса пользователя (для файловых баз). Чтобы сбросить этот кэш:

  1. Откройте список проблемных документов за текущий год и отсортируйте их по колонке "Номер" по убыванию.
  2. Найдите все документы нового года с ошибочными (продолжающимися) номерами.
  3. Вручную перенумеруйте их в правильном формате, строго соблюдая количество нулей. Если префикс "УТТТ", а общая длина 11 символов, первый номер должен выглядеть как "УТТТ0000001", второй — "УТТТ0000002" и так далее.
  4. Перезапустите службу сервера 1С (или закройте все клиентские приложения, если база файловая). После перезапуска кэш очистится, платформа найдет в базе максимальный номер текущего года ("УТТТ0000002") и следующий документ получит номер "УТТТ0000003".

Способ 2. Программный сброс кэша нумерации (без перезапуска сервера)

Перезапуск сервера прерывает работу всех пользователей, что в рабочее время недопустимо. Вместо этого разберем более изящный метод с использованием встроенного языка 1С. Платформа предоставляет специальный метод ОбновитьНумерациюОбъектов, который мгновенно очищает кэш выданных номеров в оперативной памяти.

Для применения этого способа вам потребуется создать простую внешнюю обработку и поместить в нее следующий код:


// Очистка кэша нумерации для всех объектов (может занять время)
ОбновитьНумерациюОбъектов();

// Либо очистка кэша только для конкретного вида документа
ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);

Порядок действий будет следующим:

  1. Вручную исправьте номера уже созданных в новом году документов на правильные (обязательно с сохранением всех ведущих нулей).
  2. Запустите внешнюю обработку с командой ОбновитьНумерациюОбъектов.
  3. Создайте новый документ. Система автоматически обратится к таблицам базы данных, найдет ваш последний исправленный номер и корректно присвоит новому документу следующий по порядку номер.

Применяя эти методы, вы сможете быстро и безболезненно наладить автонумерацию документов в системе 1С, избежав путаницы в документообороте с контрагентами.

← На главную