В процессе работы в программах «1С:Предприятие» пользователи иногда сталкиваются с ситуацией, когда при создании нового документа «Счет-фактура выданный» система начинает подставлять некорректные номера. Например, вместо ожидаемого очередного номера 0000-0001025 программа настойчиво предлагает 0000-0253-31. Даже после ручного исправления номера в новом документе следующий созданный документ все равно получает номер 0000-0253-32. Рассмотрим подробно, почему возникают такие сбои и как правильно настроить нумерацию, не нарушая учетных данных.
Проанализируем алгоритм, по которому платформа «1С:Предприятие» формирует новые номера документов. Встроенный нумератор разбирает строковое значение номера справа налево:
Если в базе появляется документ с номером вида 0000-0253-30, платформа разбирает его следующим образом:
Префиксом становится строка 0000-0253-, а числовой частью — значение 30. При попытке сгенерировать следующий номер автонумератор платформы видит данный префикс и увеличивает его числовую часть, выдавая номер 0000-0253-31.
Кроме того, на сервере 1С работает механизм кэширования номеров. Однократное изменение номера руками в отдельном документе не сбрасывает внутренний счетчик нумератора в оперативной памяти сервера, из-за чего система продолжает настойчиво вызывать следующий номер с дефисным префиксом.
Рассмотрим самый простой и эффективный способ исправления ситуации без необходимости менять программный код. Если главный бухгалтер запрещает изменять сам содержательный номер документа (в нашем примере это 0253-30), достаточно вынести его из основного диапазона нумерации за счет изменения префикса.
Стандартный номер счетов-фактур имеет вид 0000-0000001 (где 0000- — стандартный префикс организации или базы). Чтобы исключить документ из общей цепочки нумерации, изменим первый дефисный блок:
0000-0253-30.0001-0253-30 или зададим уникальный буквенный префикс, например, СП00-0253-30.После такого изменения платформа будет считать данный документ принадлежащим отдельному префиксу (0001-0253- или СП00-0253-). Теперь основной нумератор с префиксом 0000- вернется к правильной последовательности и предложит следующий номер из основного диапазона — 0000-0001025.
Если после нормализации номеров или изменения префикса система все еще продолжает выдавать старые значения из памяти сервера, необходимо принудительно обновить нумерацию объектов в базе данных. Для этого выполним следующий код во внешней обработке или через консоль кода:
ОбновитьНумерациюОбъектов(Метаданные.Документы.СчетФактураВыданный);
Метод ОбновитьНумерациюОбъектов() заставляет платформу сбросить закэшированные на сервере значения номеров, заново прочитать все документы из базы данных и корректно определить максимальный текущий номер для каждого префикса.
Разберем ситуацию, когда специфический формат номера требуется отражать в печатных формах и книге продаж. Заставлять систему вести нумерацию с несколькими дефисами в поле системного номера Номер — некорректно, так как это нарушает стандартную работу платформы.
В типовых конфигурациях на базе 1С:БСП (Библиотека Стандартных Подсистем) предусмотрен механизм автоматического формирования печатного номера. Из системного номера при печати отсекаются лидирующие нули и префиксы организации. Если же требуется сложная нумерация (например, использование дробей или литер при обособленных подразделениях), правильнее использовать следующий подход:
Номер стандартным для обеспечения непрерывной автонумерации платформой.УстановитьНовыйНомер.Выяснив причину работы нумератора 1С и изолировав документы с нестандартной структурой номеров с помощью уникальных префиксов, можно легко восстановить корректную автонумерацию счетов-фактур без снятия конфигурации с поддержки.