В процессе работы с программами 1С пользователи иногда сталкиваются с ситуацией, когда при создании нового документа платформа присваивает ему некорректный, слишком большой номер. Подобная проблема часто возникает из-за случайного переноса документа из прошлых периодов, ручного изменения номера или сбоя в платформенном кэше счетчика номеров. Рассмотрим подробнее, почему происходит подобный сбой и как восстановить правильную последовательность автонумерации.
Платформа 1С отслеживает уникальность и последовательность номеров документов. Если для документа установлена периодичность нумерации (например, в пределах года), платформа при создании нового документа ищет максимальный номер в текущем периоде и увеличивает его на единицу.
Проблема возникает в следующем сценарии:
5892 из прошлого года) на текущую дату.5892.5893, несмотря на то, что в журнале документов такого номера визуально нет.Обычные обработки по перенумерации существующих документов в этой ситуации не помогают, так как они меняют только видимые номера уже созданных записей, но не сбрасывают внутренний счетчик платформы 1С.
Для решения проблемы «залипшего» номера в платформе 1С предусмотрен специальный встроенный метод ОбновитьНумерациюОбъектов(). Он заставляет систему заново проанализировать физически записанные в базе данные и обновить внутренние счетчики нумерации в соответствии с реальным максимальным номером.
Синтаксис метода выглядит следующим образом:
ОбновитьНумерациюОбъектов(ОбъектМетаданных);
В качестве параметра можно передавать конкретный объект метаданных или массив объектов. Если параметр не указан, нумерация обновится для всех объектов базы данных.
Разберем пример кода для вызова обновления нумерации конкретного документа (например, Заказ покупателя):
// Вызов сброса счетчика нумерации для конкретного документа
ОбновитьНумерациюОбъектов(Метаданные.Документы.ЗаказПокупателя);
Выполнить этот код можно несколькими способами:
Важно: вызов этого метода разрешен только пользователям с административными правами. После выполнения процедуры все ранее выданные, но еще не записанные в базу номера становятся невалидными.
В конфигурациях на обычных формах (таких как «1С:Комплексная автоматизация 1.0» или «1С:Управление производственным предприятием 1.3») присутствует специальная служебная обработка, позволяющая сбросить счетчик без написания кода.
Разберем порядок действий по шагам:
НастройкаСтратегииРедактированияНомеровОбъектов (ее можно найти через интерфейс настройки учета или меню «Операции» -> «Обработки»).Заказ покупателя).Если после вызова процедуры обновления нумерации программа продолжает выдавать неправильный номер, проанализируем следующие факторы:
0000000001, а не 1). Если в номер попал пробел или латинская буква, платформа будет считать такой номер наибольшим при лексикографической сортировке.rphost может удерживать выданные номера в оперативной памяти. Если перезапуск нумерации через код не сработал, может потребоваться перезапуск службы сервера 1С:Предприятия.