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