Сбилась нумерация документов. Как вернуть прежний порядок?

Как известно, номер документа может быть текстовым или числовым – это задается в Конфигураторе в свойствах документа. Там же можно включить Автонумерацию, тогда программа будет сама генерировать номер нового документа.
Механизм автонумерации работает довольно просто. Если номер числовой, то берется максимальный номер среди существущих документов, и он увеличивается на единицу. Тут проблем не возникает. С текстовым номером программа поступает так: берет всю числовую часть номера (отсекает префикс, если есть), увеличивает значение на единицу, учитывая при этом количество лидирующих нулей, и возвращает обратно текст, присоединяя отсеченный ранее префикс, если он был.
Определяющее значение во всей этой процедуре играет “количество нулей”, т.е. разрядность номера. Вот что пишут в разделе “Советы линии консультации” на диске ИТС:
... Особенность алгоритма автоматического присваивания нового номера в этом случае заключается в том, что он предполагает неизменную длину номера, например, “00001” – “00002” – “00003”. Другой пример (с префиксом) – “Ст-001” – “Ст-002” – “Ст-003”.
Почему это важно? Потому, что при определении наибольшего номера 1С анализирует номера с наименьшей разрядностью. Иными словами, если пользователь в каком-то документе вручную поменял разрядность номера (вместо “00012” написал “12”), то автоматически будет увеличиваться номер с меньшей длиной (новым номером будет “13”, а не “00013”).
Следствием такого поведения может быть ошибка “Номер не уникален”. Она возникает потому, что когда увеличивать номер больше некуда (“99”, “Счф-999” и т.п.), программа снова начинает отчет с единицы (создает, соответственно, “01” и “Счф-001”).
Самый простой способ исправить ситуацию – найти документ с некорректным номером и изменить в нем номер на правильный.
Если ситуация позволяет, можно перенумеровать все документы базы по порядку. Для этого, понятно, лучше воспользоваться обработкой.
Можно начать новую нумерацию – для этого надо поменять префикс документа. Имейте ввиду, что префикс документа может быть установлен либо функцией ПрефиксАвтоНумерации(<ИмяВида>,<Префикс>) в глобальном модуле, либо в процедуре ВводНового() в модуле формы документа с помощью функции УстановитьНовыйНомер(<Префикс>).
В большинстве случаев нет необходимости в редактировании номера документа. А самый простой способ избежать сбоев в автонумерации – запретить ручное редактирование номера. Для этого достаточно в форме документа в свойствах Поля ввода “НомерДок” отметить галочку “Запретить редактирование”.

| опубликовано: 26 Июль 2007, 19:15

Комментирование этой статьи закрыто