Многие пользователи 1С сталкиваются с ситуацией, когда с наступлением нового года нумерация документов (например, реализаций или счетов) не начинается с первого номера, а продолжает прошлогоднюю последовательность. Например, вместо ожидаемого номера с единицы система выдает номер 121, продолжая нумерацию от документа с номером 120. Рассмотрим подробнее, почему возникает эта проблема и как вернуть системе правильный отсчет.
Проанализируем ситуацию и выделим основные причины, по которым автоматическая нумерация документов дает сбой при смене года:
Периодичность может быть ошибочно установлено в значение "Весь период", а не "В пределах года". Если это так, платформа физически не будет обнулять нумератор 1 января.Разберем по шагам, как платформа 1С воспринимает длину номера. Длина строкового номера жестко задана в конфигураторе. Платформа ожидает, что всё свободное пространство между текстовым префиксом и значащими цифрами будет заполнено нулями.
Если в базе использовались номера из 11 символов (например, "УТТТ0000120"), а вы попытаетесь искусственно начать новую нумерацию, введя номер из 10 символов ("ЯУТТТ00001") или из 9 символов ("Я00000001"), система не сможет корректно сопоставить эти пространства номеров. При строковой сортировке более короткие номера могут оказаться "больше" или "меньше" длинных вопреки математической логике, что приведет к отсечению цифровой части и сбоям при инкрементировании (увеличении номера на единицу).
Важно: При изменении префикса для системы создается совершенно новое пространство номеров. Но общая длина поля должна оставаться неизменной, а нули должны занимать все пустые позиции.
Существует несколько способов восстановить правильную нумерацию. Посмотрим на пример каждого из них.
Способ 1. Ручное исправление и перезапуск сервера
Текущая "отметка нумерации" (последний выданный номер) сохраняется в оперативной памяти сервера приложений 1С (для серверных баз) или до закрытия последнего сеанса пользователя (для файловых баз). Чтобы сбросить этот кэш:
Способ 2. Программный сброс кэша нумерации (без перезапуска сервера)
Перезапуск сервера прерывает работу всех пользователей, что в рабочее время недопустимо. Вместо этого разберем более изящный метод с использованием встроенного языка 1С. Платформа предоставляет специальный метод ОбновитьНумерациюОбъектов, который мгновенно очищает кэш выданных номеров в оперативной памяти.
Для применения этого способа вам потребуется создать простую внешнюю обработку и поместить в нее следующий код:
// Очистка кэша нумерации для всех объектов (может занять время)
ОбновитьНумерациюОбъектов();
// Либо очистка кэша только для конкретного вида документа
ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);
Порядок действий будет следующим:
ОбновитьНумерациюОбъектов.Применяя эти методы, вы сможете быстро и безболезненно наладить автонумерацию документов в системе 1С, избежав путаницы в документообороте с контрагентами.