Многие пользователи сталкиваются с ситуацией, когда после тестирования и исправления базы, обмена данными или банальной ошибки ручного ввода в 1С сбивается автоматическая нумерация документов. Например, в базе с двумя организациями префикс авансовых счетов-фактур внезапно меняется с правильного Анов на ошибочный евАнов. Самое неприятное в этой ситуации то, что ручное исправление номера в последнем документе не помогает: следующий созданный документ упорно получает неправильный префикс. Давайте разберем по шагам, почему это происходит и как правильно решить данную проблему.
Проанализируем механику работы платформы 1С. Механизм автонумерации работает путем поиска максимального номера документа в пределах заданного периода (чаще всего это год). Поиск и сравнение идут исключительно по строковому значению. Если в базе появляется префикс евАнов, то при сортировке строк он по правилам алфавита расценивается платформой как больший, чем Анов. В результате программа берет именно этот искаженный номер за основу для генерации следующего порядкового номера.
Рассмотрим частую ошибку, которую допускают пользователи при попытке всё исправить. При ручном исправлении евАнов обратно на Анов пользователи стирают лишние буквы, но при этом часто случайно удаляют нули перед цифрами. Если вместо Анов0000012 написать просто Анов12, автонумератор сломается окончательно, так как нарушится общая разрядность номера. Обязательно нужно сохранять исходное количество символов в номере документа. Платформа 1С строго следит за длиной строкового номера.
Чтобы раз и навсегда восстановить порядок, выполним следующие действия. Помните: если поменять местами шаги, чуда не произойдет, и нумератор снова собьется.
евАнов.Дело в том, что платформа 1С кэширует выданные номера в оперативной памяти сервера или клиентского приложения. Даже если вы исправите все неверные номера в документах, программа «помнит» ошибочный номер. Чтобы очистить этот кэш, есть два пути:
Вариант 1: Административный.
Если вы работаете в файловом варианте, достаточно просто выгнать всех пользователей из базы. Если вариант клиент-серверный — потребуется перезапустить службу сервера 1С:Предприятия.
Вариант 2: Программный (через код).
Вы можете принудительно обновить кэш, используя метод ОбновитьНумерациюОбъектов. Если вызвать метод без параметров, он пересчитает нумерацию для всех справочников и документов базы, что может занять значительное время. Лучше использовать его точечно. Вызовем этот метод через внешнюю обработку или консоль кода:
// Точечное обновление нумерации только для счетов-фактур
ОбновитьНумерациюОбъектов(Метаданные.Документы.СчетФактураВыданный);
Запустить этот код может только пользователь с полными административными правами. Выполнив все эти шаги в строгой последовательности, вы полностью очистите внутренний счетчик 1С, и программа снова начнет нумеровать ваши счета-фактуры корректно, начиная с максимального правильного номера Анов.