Ситуация, когда пользователь или бухгалтер вручную корректирует номер документа, — одна из самых распространенных причин обращения к техническому специалисту. В платформе 1С:Предприятие 8 встроен мощный механизм автоматической генерации номеров, однако он крайне чувствителен к структуре строки. Стоит один раз ввести номер со спецсимволом (например, слэш /) или изменить количество знаков, как вся последующая последовательность «ломается».
В этой статье мы подробно разберем, почему это происходит, как работает механизм кэширования на стороне сервера и какими способами можно вернуть нумерацию в нормальное русло, сохранив при этом созданные «проблемные» документы.
Прежде чем приступать к активным действиям, нам необходимо понять внутреннюю логику работы платформы. Рассмотрим основные факторы, которые влияют на выбор следующего номера:
0085/2, система воспринимает 2 как числовую часть, а 0085/ как префикс. Следующим номером логично станет 0085/3.00125, а текущие номера были в районе 000095, платформа будет предлагать 00126, так как строковое значение 00125 «больше» (в нем больше значащих цифр в числовой части), чем 000095.ragent) в целях оптимизации «бронирует» диапазон номеров. Если система один раз «увидела» неправильный номер и закэшировала его, простым переименованием документа проблему не решить — сервер продолжит выдавать значения из памяти.Первым делом проанализируем программные возможности платформы. Существует штатный метод, предназначенный для принудительного пересчета последнего номера. Разберем, как его запустить. Нам потребуется создать внешнюю обработку или воспользоваться консолью кода.
Рассмотрим пример кода для документа РеализацияТоваровУслуг:
// Метод обновляет нумерацию для конкретного типа метаданных
ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);
Важно помнить, что этот метод работает не всегда мгновенно в серверных базах из-за упомянутого выше кэша. Если после выполнения кода нумерация не восстановилась, переходим к следующему шагу.
Если база данных работает в серверном режиме, выполнение ОбновитьНумерациюОбъектов часто оказывается недостаточным. Платформа продолжает предлагать «кривой» номер (например, 00125), даже если документ с таким номером удален.
Проанализируем алгоритм действий:
РеализацияТоваровУслуг, отсортированный по номеру в убывающем порядке.0000-000096).ragent, rmngr и rphost очищает кэш выданных номеров.Рассмотрим ситуацию, когда перезагрузить сервер прямо сейчас невозможно. В этом случае попробуйте временно изменить префикс организации. Это заставит систему обратиться к другой ветке нумерации, а при возврате старого префикса кэш для него может обновиться принудительно (но это не гарантированный метод).
Выясним причину, почему документ 0085/2 мешает остальным. Слэш в номере разрывает единую числовую последовательность. Чтобы оставить этот документ и продолжить нормальную нумерацию, нужно сделать так, чтобы 0085/2 не считался системой как «максимальный».
Рассмотрим пошагово, как это сделать:
95 должно быть 0000-000095.0085/2, убедитесь, что его строковое представление при сортировке оказывается «меньше», чем ваш следующий желаемый номер. В 1С строковая сортировка работает посимвольно.Если документов со сбитыми номерами стало слишком много, ручная правка неэффективна. Разберем инструменты, которые помогут автоматизировать процесс. В конфигурациях на базе БСП (например, Бухгалтерия предприятия 3.0) есть возможность использовать обработку «Редактирование номеров объектов».
Также мы можем воспользоваться универсальной обработкой с портала ИТС — «Перенумерация объектов». Она позволяет:
Важное замечание по обменам: Если ваша база синхронизируется с другими системами (например, «Управление торговлей» или «Зарплата и управление персоналом»), помните, что номер документа часто является ключевым полем для поиска. Массовое изменение номеров в Бухгалтерии может привести к тому, что при следующем обмене документы в базе-приемнике не будут найдены и создадутся дубли. Всегда выполняйте перенумерацию только после согласования с администратором обменов.
Подведем итог нашим действиям. Чтобы вернуть нумерацию к исходному виду и победить «навязчивый» номер 00125:
ОбновитьНумерациюОбъектов()._DocumentNNN.Помните: самое надежное решение — это административный запрет на редактирование номеров документов пользователями. Это настраивается в правах доступа (ролях) путем отключения права «Интерактивное изменение номера».