Сбой нумерации документов — одна из самых распространенных и неприятных проблем в работе с конфигурациями на платформе 1С:Предприятие 8.3. Особенно часто это встречается в программе 1С:Управление нашей фирмой (УНФ). Ситуация обычно выглядит так: вы годами работали с последовательными номерами (например, 1, 2, 3...), и вдруг следующий документ создается с огромным номером (например, 6000+), хотя в базе всего триста документов. В этой статье мы подробно разберем причины такого поведения системы и рассмотрим шаги по полному восстановлению корректного порядка номеров — для этого есть автоматизация нумерации и восстановление порядка 1С.
Для начала проанализируем, как 1С вообще понимает, какой номер присвоить следующему документу. В современных версиях платформы (8.3) нет жесткой таблицы "последних номеров". Система работает динамически: она ищет в базе данных документ с максимальным номером для текущего периода (обычно это год) и прибавляет к нему единицу.
Рассмотрим основные причины, по которым этот механизм дает сбой:
СчетФактура часто синхронизируются с номерами РасходнаяНакладная. Если в цепочке документов (например, при оформлении возврата или корректировки) затесался документ из другого периода или с кривым номером, он может "утянуть" нумерацию за собой.Прежде чем приступать к программным методам, нам необходимо навести порядок в самих данных. Если мы не найдем документ, который задал неверный "потолок" нумерации, все наши усилия будут напрасны — система снова вернется к большим числам. Для этой задачи есть поиск ошибок и проверка качества учета.
Выясним причину через реестр документов. Нам нужно вывести список всех счет-фактур за текущий год и отсортировать их по номеру в порядке убывания. Обратите внимание на следующие моменты:
СчетФактура, но и документы-основания (Расходные накладные, Приходные накладные, Возвраты).Как только вы найдете документы с номерами 6000+, их необходимо исправить вручную — в этом поможет настройка нумерации счетов-фактур в 1С:УНФ. Присвойте им правильные номера, соблюдая хронологию и формат префикса (например, НННФ-000305).
Часто бухгалтеры сталкиваются с тем, что номера исправлены, лишние документы удалены, но 1С все равно продолжает предлагать номер 6001. Это происходит из-за того, что сервер хранит последний номер в своей оперативной памяти. Нам нужно принудительно заставить систему "пересчитать" максимум.
Для этого используется встроенная процедура ОбновитьНумерациюОбъектов. Разберем, как выполнить её самостоятельно, если вы не являетесь программистом, через внешнюю обработку.
Создадим простейшую обработку, на форму которой добавим кнопку. В модуле формы пропишем следующий код:
&НаКлиенте
Процедура ОбновитьНумерацию(Команда)
ОбновитьНумерациюНаСервере();
Сообщить("Готово! Кэш нумерации очищен. Попробуйте создать новый документ.");
КонецПроцедуры
&НаСервере
Процедура ОбновитьНумерациюНаСервере()
// Указываем тип документа, для которого нужно сбросить счетчик
ОбновитьНумерациюОбъектов(Метаданные.Документы.СчетФактура);
// Если проблема и в накладных, добавим и их
ОбновитьНумерациюОбъектов(Метаданные.Документы.РасходнаяНакладная);
КонецПроцедуры
Важный нюанс: Чтобы процедура сработала на 100%, рекомендуется выполнять её, когда в базе нет активных пользователей. В файловой базе достаточно просто всех выгнать. В серверном варианте (SQL) в идеале стоит перезапустить службу 1C:Enterprise Server, но выполнение этой команды через обработку обычно решает проблему и без перезагрузки.
После выполнения процедуры попробуйте создать новый документ (просто нажать "Создать", записывать не обязательно). Если номер подставился верный (например, 306 вместо 6001) — поздравляем, вы справились!
Проанализируем еще одну тонкость: формат номера. В 1С:УНФ номер имеет фиксированную длину. Если стандартный номер выглядит как НННФ-000001, а вы вручную написали НННФ-1, система потеряет способность автоматически увеличивать его. Всегда следите за тем, чтобы количество цифр и нулей соответствовало тому, что задано программой по умолчанию.
Чтобы больше не сталкиваться с проблемой "слетевших" номеров в 1С:УНФ, рекомендуем придерживаться следующих правил:
Рассмотренный нами метод с использованием ОбновитьНумерациюОбъектов является универсальным для любой конфигурации на платформе 8.3 (Бухгалтерия, УТ, ERP), поэтому сохраните этот код — он обязательно пригодится вам при закрытии очередного отчетного периода.