Почему авансовые отчеты нумеруются с дробью и как исправить автонумерацию в 1С

Бухгалтер 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

В процессе работы в программах 1С пользователи нередко сталкиваются с ситуацией, когда новый документ внезапно получает номер с дробной частью — например, БП00000013/1, БП00000013/2 и далее. Физическое удаление или пометка на удаление таких документов не решают проблему: следующий созданный документ все равно упорно получает номер со следующим значением суффикса (например, БП00000013/5). Разберем, почему возникает такое поведение платформы и как восстановить стандартную последовательную нумерацию.

Почему платформа 1С добавляет косую черту в номер документа

Проанализируем механику работы автонумератора платформы «1С:Предприятие». Появление дроби — это не программный сбой, а штатный защитный алгоритм контроля уникальности номеров:

  1. Конфликт уникальности: если платформа пытается сгенерировать очередной номер в пределах установленного периода (обычно это календарный год) и обнаруживает, что документ с таким номером уже существует, она автоматически добавляет суффикс через дробь, чтобы не нарушать уникальность.
  2. Сбитая длина номера и лидирующие нули: если ранее кто-то из пользователей вручную ввел номер документа без ведущих нулей (например, 13 вместо БП00000013) или использовал пробелы/лишние символы, платформа теряет правильный шаблон инкремента и начинает присваивать суффиксы.
  3. Кеширование счетчиков на стороне платформы: платформа хранит максимальный сгенерированный номер в оперативной памяти (в кеше рабочего процесса сервера или сеанса). Даже если ошибочный документ полностью удален из базы, внутренний счетчик продолжает отсчет от последнего известного максимального значения.
  4. Ошибки в датах документов: если документ был случайно проведен будущим числом (например, следующим годом), нумератор переключается на новый диапазон и может нарушить цепочку в текущем периоде.

Способ 1. Использование встроенной обработки обновления нумерации

Рассмотрим штатный способ сброса кешированных номеров в конфигурациях на обычных формах (таких как «1С:Бухгалтерия предприятия 2.0» или «1С:Управление производственным предприятием»). Выполним следующие действия:

  1. Перейдем в главное меню программы: Операции → Обработки.
  2. Найдем и откроем обработку Настройка стратегии редактирования номеров (кодов) объектов (в некоторых редакциях может располагаться в меню Сервис).
  3. В открывшемся окне выполним команду обновления нумерации. При этом система перечитает фактические номера из базы данных и обновит внутренние счетчики автонумератора.

Способ 2. Программный сброс нумератора через встроенный язык 1С

Если требуется исправить автонумерацию точечно или на управляемых формах через внешнюю обработку/консоль кода, применим метод глобального контекста ОбновитьНумерациюОбъектов(). Разберем примеры вызова данного метода:

Для сброса счетчиков только по конкретному документу (например, по авансовым отчетам):

ОбновитьНумерациюОбъектов(Метаданные.Документы.АвансовыйОтчет);

Для полного обновления нумераторов по всей информационной базе без указания конкретного типа объектов:

ОбновитьНумерациюОбъектов();

Данная процедура принудительно очищает внутренний кеш номеров платформы и заново определяет максимальный номер на основе реально существующих в информационной базе документов.

Способ 3. Поиск и исправление некорректных номеров в базе

Посмотрим, что делать, если после обновления нумерации дробные номера продолжают появляться. Это означает, что в базе физически присутствует документ, мешающий корректному автоинкременту. Разберем алгоритм поиска по шагам:

  1. Откроем журнал документов АвансовыйОтчет за весь текущий год.
  2. Отключим все установленные фильтры и отборы (по организации, контрагенту, проведенности).
  3. Отсортируем список по колонке Номер и внимательно проверим структуру номеров. Особое внимание уделим непроведенным и помеченным на удаление документам.
  4. Найдем документы с нестандартными номерами: короткими (без нулей), содержащими пробелы, ручные префиксы или дроби.
  5. Исправим вручную все ошибочные номера, приведя их к общему формату (например, БП00000013), либо удалим ненужные помеченные объекты через Операции → Удаление помеченных объектов.
  6. После исправления структуры номеров повторно выполним вызов ОбновитьНумерациюОбъектов().

В клиент-серверном варианте базы данных (SQL) в случае зависания счетчиков дополнительно помогает перезапуск службы кластера серверов 1C:Enterprise Server или перезапуск рабочего процесса rphost.

← На главную