В процессе ежедневной работы в программе 1С:Предприятие 7.7 пользователи часто сталкиваются с досадными техническими сбоями. Один из самых распространенных — это ошибка «Номер не уникальный» при попытке записать или провести документ. Особенно странно это выглядит, когда документ, создаваемый «вручную» (отдельно), проводится без проблем, а при создании методом «Ввод на основании» система упорно отказывается его сохранять. В этой статье мы подробно разберем, почему так происходит, как устроен механизм автонумерации в платформе 1С 7.7 и как быстро исправить эту ситуацию вместе с пользователями.
---
Для начала давайте проанализируем поведение системы и выясним главную причину этого феномена. Всё дело в дате создаваемого документа и периодичности нумерации в 1С 7.7:
Переоценка) автоматически наследует дату своего родительского документа-основания (Перемещение ТМЦ). Если менеджер или бухгалтер делает переоценку на основе перемещения, которое было проведено, например, в прошлом месяце или даже в прошлом году, то новая Переоценка автоматически получит ту самую старую дату.---
Давайте разберем внутренний алгоритм работы автонумератора текстовых номеров в 1С 7.7. Система работает по принципу поиска максимального значения (по алфавиту) среди существующих документов за выбранный период периодичности, после чего пытается увеличить его числовую часть на единицу.
Посмотрим на классические примеры того, как пользователи (или, как выразился автор темы, «дятлы») ломают этот механизм:
Стандартный шаблон номера документа имеет строго определенную длину, например, 8 символов: 00000125. Если пользователь вручную решает «сократить» номер и вводит вместо него 125 (убирая лидирующие нули), система воспринимает это как команду начать новый отсчет. Автонумератор продолжит цепочку: 126, 127 и так далее. Однако, когда этот укороченный счетчик дойдет до предела разрядности (например, до 999), система не сможет автоматически перейти на четырехзначный регистр и начнет выдавать ошибку уникальности либо конфликтовать со старыми номерами, где нули сохранились.
Если в числовую часть номера вставляется буква или знак препинания (например, дробь, дефис или префикс в конце номера: 0000125А, 0000125/1), автонумератор при определении максимального значения считает этот номер «самым большим» в выборке из-за особенностей сортировки текстовых полей. При создании следующего документа 1С пытается математически прибавить единицу к букве «А» или знаку «/».
Поскольку прибавить единицу к букве невозможно, автонумератор «застревает» на последнем корректном числовом значении перед этой буквой либо пытается повторно присвоить тот же самый некорректный номер новому документу, что сразу вызывает ошибку «Номер не уникальный».
---
Если вы столкнулись с подобной проблемой, выполните следующие шаги для восстановления корректной работы системы.
Прежде чем открывать отладчик, давайте воспользуемся стандартными возможностями интерактивной работы в 1С 7.7:
Переоценка (или общий журнал документов).0000125А) сразу же окажутся либо в самом верху, либо в самом низу списка.Как только проблемный документ найден, его необходимо исправить:
0000125А) на стандартный свободный номер из правильного диапазона с соблюдением разрядности и лидирующих нулей (например, 00000126).Если вам нужно срочно провести документ, созданный на основании за прошлый период, а времени на поиск поломанных номеров прямо сейчас нет, можно применить следующую хитрость:
Переоценка на основании перемещения. Механизм автонумерации должен сработать корректно.---
Что делать, если документов со сбитой нумерацией слишком много и вручную исправлять их нецелесообразно? Рассмотрим системные методы решения.
Для массового исправления номеров документов рекомендуется использовать стандартную внешнюю обработку с диска ИТС (Информационно-Технологическое Сопровождение). Обычно она называется docrenum.ert (или универсальный подбор объектов UChoice.ert).
Эта обработка позволяет:
Переоценка).Если ваше предприятие работает в базе данных 1С 7.7 уже много лет, физическая длина номера (количество символов) могла просто исчерпать себя. Например, если длина номера была ограничена 5 символами, и счетчик дошел до 99999, система больше не сможет автоматически создавать новые документы.
В этом случае порядок действий следующий:
Переоценка.docrenum.ert, чтобы заполнить новые свободные разряды слева лидирующими нулями.Подводя итог, можно сказать, что порядок в нумерации документов — это залог стабильной работы любой базы данных 1С. Объясните вашим пользователям, что ручное вмешательство в автонумерацию (особенно добавление букв в числовые поля) неизбежно ведет к техническим сбоям, и научите их избегать подобных ошибок в будущем.