Ситуация, когда в программе 1С:Предприятие внезапно перестает работать автоматическая нумерация документов, знакома многим пользователям. Чаще всего это происходит после того, как кто-то из сотрудников вручную отредактировал номер документа, добавив в него лишние символы, изменив префикс или нарушив количество знаков. В результате при попытке создать новый документ система либо выдает ошибку «Номер не уникален», либо предлагает странные значения (например, с дробью), либо «застревает» на одном и том же числе.
В этой статье мы подробно разберем механизмы работы нумератора 1С, выясним причины сбоев и рассмотрим пошаговые инструкции по восстановлению правильной последовательности номеров.
Прежде чем приступать к исправлению, нам важно понять, как именно 1С «придумывает» следующий номер. Проанализируем алгоритм работы системы:
/9 нужно сделать /10, но лишнего места в строке нет), нумератор «затыкается» и выдает ошибку.Рассмотрим пример из практики: пользователь ввел номер 0000-000547/1. Для 1С префиксом стала вся часть 0000-000547/, а числом — единица. Следующий номер, который предложит программа, будет 0000-000547/2. Когда очередь дойдет до /9, система попытается создать номер с окончанием /10, но если общая длина строки превысит допустимый лимит, возникнет критическая ошибка.
Первым делом нам необходимо найти документ, который нарушил логику нумерации. Мы не можем просто исправить последний счет, если до него в базе уже «наплодились» документы с некорректным форматом.
Проанализируем список документов (счетов на оплату). Отсортируем их по номеру. Важный нюанс: строковая сортировка в 1С отличается от числовой. Номера со специальными символами (например, начинающиеся на «/» или имеющие другой префикс) могут оказаться в самом начале или в самом конце списка. Внимательно просмотрим все счета за текущий год и найдем те, чей формат отличается от стандартного 0000-000XXX.
Если документов с ошибками немного (как отмечалось на форуме, обычно это не более 9-10 штук), их проще всего исправить вручную. Рассмотрим этот процесс:
0000-000803, а следующий за ним ошибочный — 547/1, то ошибочному нужно присвоить номер 0000-000804.Еще — Разрешить редактирование реквизитов (если такая возможность предусмотрена в вашей конфигурации) или специальной обработкой «Редактирование номера документа».Если «испорченных» номеров много, воспользуемся мощным встроенным инструментом «Групповое изменение реквизитов». Это безопаснее и быстрее, чем ручная правка каждого документа. Для автоматической последовательной перенумерации можно также воспользоваться внешней обработкой для перенумерации документов по виду и префиксу.
Разберем последовательность действий:
Администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов.Счет на оплату покупателю.Добавить условие отбора и отфильтруем документы, которые имеют неправильный формат (например, по дате или по диапазону номеров).Номер. Если он не отображается, нажмем кнопку Дополнительные параметры и установим флажок Показывать служебные реквизиты.Даже если мы исправили все номера в базе, 1С может продолжать предлагать ошибочные варианты. Это происходит из-за кэширования номеров на стороне сервера. Программа «бронирует» диапазон номеров в оперативной памяти для ускорения работы. Чтобы «сбросить» этот кэш, нам нужно выполнить программный метод ОбновитьНумерациюОбъектов().
Для этого не обязательно быть программистом. Можно использовать консоль запросов или создать простейшую обработку с кодом:
// Пример кода для обновления нумерации счетов на оплату
МассивМетаданных = Новый Массив;
МассивМетаданных.Добавить(Метаданные.Документы.СчетНаОплатуПокупателю);
ОбновитьНумерациюОбъектов(МассивМетаданных);
После выполнения этой команды система заново проанализирует таблицу документов в базе данных, найдет максимальный номер и начнет отсчет от него. Для выполнения этой процедуры без самостоятельного написания программного кода можно использовать обработку для обновления нумерации объектов и сброса счетчиков.
Иногда, как предложили участники форума, помогает временное изменение префикса. Если мы заменим в одном из документов первую цифру номера на букву (например, А000-000804), нумератор может «перескочить» проблемный участок. Однако этот метод стоит использовать с осторожностью, так как он может привести к появлению новой, еще более запутанной последовательности номеров.
Чтобы в будущем не сталкиваться с подобными проблемами, рекомендуем придерживаться следующих правил:
ОС- для «Орион-Сервис», ТД- для «Торговый Дом»). Это разделит потоки нумерации.15 и номер 0000-000015 — это принципиально разные вещи для системы 1С.Подведем итог: исправление нумерации — задача кропотливая, но вполне решаемая стандартными средствами. Главное — найти и обезвредить все документы с нестандартными символами в номере и не забыть обновить кэш сервера с помощью команды ОбновитьНумерациюОбъектов.