К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как получить новый номер документа в 1С

Как получить новый номер документа в 1С: автонумерация, метод ПолучитьНомерДокумента, установка номера вручную, исправление сбоев нумерации и типичные ошибки.

Номер документа в 1С формируется автоматически при записи нового объекта, но на практике часто требуется получить номер заранее — до записи, изменить его вручную или восстановить нумерацию после сбоя. Платформа 1С:Предприятие предоставляет для этого несколько механизмов: штатную автонумерацию, методы встроенного языка и инструменты ручного управления номерами.

Выбор способа зависит от задачи. Бухгалтеру обычно достаточно автоматической нумерации и редкой ручной правки, разработчику нужны программные методы для обменов и печатных форм, а администратору — понимание, как работают нумераторы и периодичность, чтобы устранять конфликты номеров.

Ниже разобраны все рабочие варианты: от простого создания документа в пользовательском режиме до программного получения номера через объектную модель и запросы, а также исправление типичных проблем с нумерацией.

Как устроена автонумерация документов в 1С

Каждый вид документов в конфигураторе имеет настройки нумерации: длину номера, периодичность (в пределах года, месяца, дня или неперiodически) и признак автонумерации. Когда пользователь создаёт документ и записывает его, платформа берёт последний использованный номер в заданном периоде и увеличивает его на единицу.

Периодичность определяет, когда отсчёт начинается заново. Например, счета-фактуры часто нумеруются в пределах года: с 1 января нумерация стартует с единицы. Документы с неперiodической нумерацией продолжают счёт сквозным образом за всё время ведения учёта.

Важно понимать: номер присваивается именно в момент записи, а не при создании формы. Пока документ не записан, поле «Номер» может отображаться пустым или содержать предварительное значение, которое ещё не зарезервировано в базе. Поэтому два пользователя, одновременно создающие документы, получат разные номера только после записи — платформа разрешает такие коллизии автоматически.

Получение номера в пользовательском режиме

Самый простой способ получить новый номер — создать документ через интерфейс программы. Откройте список нужных документов, нажмите «Создать», заполните обязательные реквизиты и нажмите «Записать» или «Провести». После записи в поле «Номер» появится присвоенное значение.

Если в конфигурации включён ручной ввод номеров, поле «Номер» доступно для редактирования. Это полезно, когда нужно продолжить нумерацию бумажного журнала или ввести номер, согласованный с контрагентом. Однако ручной ввод отключает автоматическое увеличение для данного документа: платформа запомнит введённое значение и следующий автоматический номер вычислит от него.

Как получить номер в пользовательском режиме
  1. 1
    Откройте раздел со списком нужных документов и нажмите «Создать».
  2. 2
    Заполните дату, организацию и другие обязательные поля — дата влияет на период нумерации.
  3. 3
    Нажмите «Записать»: платформа присвоит очередной номер автоматически.
  4. 4
    Проверьте номер в шапке документа и в общем списке документов.
  5. 5
    При необходимости скорректируйте номер вручную, если поле доступно для редактирования.

Обратите внимание на дату документа перед записью. Если нумерация периодическая, документ с датой прошлого года получит номер из прошлогодней серии, что может нарушить последовательность и вызвать вопросы при проверке.

Программное получение номера до записи документа

Разработчику часто нужно узнать номер ещё до записи — например, чтобы вывести его в печатную форму, передать во внешнюю систему или сформировать штрихкод. Для этого объект документа имеет метод УстановитьНовыйНомер(). Он резервирует очередной номер и записывает его в свойство Номер объекта, после чего значение можно читать и использовать.

bsl
НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДатаСеанса();
НовыйДок.УстановитьНовыйНомер();
Сообщить("Будет присвоен номер: " + НовыйДок.Номер);
НовыйДок.Записать();

Метод можно вызвать с параметром — строкой префикса, если нужно сформировать номер с конкретным префиксом, отличным от стандартного. После вызова УстановитьНовыйНомер() объект обязательно следует записать: иначе зарезервированный номер может остаться «выпавшим», и в нумерации появится разрыв.

Альтернативный вариант — просто присвоить свойству Номер нужное значение напрямую. Так делают при загрузке данных из внешних систем, когда номер уже определён источником. При этом автонумерация для объекта отключается, и ответственность за уникальность ложится на разработчика.

Настройка нумерации в конфигураторе

Если штатное поведение не подходит, параметры нумерации меняются в конфигураторе. Откройте свойства вида документа, перейдите на вкладку «Нумерация» и проверьте ключевые настройки: длину номера, периодичность и признак автонумерации.

Варианты периодичности нумерации

В пределах года

Стандарт для большинства финансовых документов. С 1 января счёт начинается заново. Ограничение: при переносе документов прошлого года возможны пересечения.

В пределах месяца или дня

Подходит для документов с очень большим количеством записей. Требует внимательного контроля при отчётности за длительный период.

Непериодическая

Сквозная нумерация за всё время. Подходит для внутренних документов с небольшим объёмом; для счетов-фактур обычно не применяется.

Длина номера ограничивает максимальное количество документов. Если длина, например, 6 символов, а часть занимает префикс, ёмкость может исчерпаться раньше, чем ожидалось. Признак исчерпания — ошибка при записи нового документа или сброс нумерации. Решение — увеличить длину номера в конфигураторе с последующим обновлением конфигурации базы данных.

Префиксы задаются либо функционалом префиксации (например, по организации или информационной базе в планах обмена), либо программно через событие ПриУстановкеНовогоНомера в модуле объекта. Подписка на это событие позволяет формировать сложные номера: с кодом подразделения, годом или буквенным индексом.

Исправление сбоев и разрывов нумерации

На практике нумерация периодически «слетает»: появляются дубли, разрывы или счёт начинается с неправильного значения. Частые причины — ручное редактирование номеров, обмены данными, восстановление из копии, удаление последнего документа.

Новый документ получает уже занятый номерСбит последний номер в нумераторе

Проверьте максимальный номер в списке документов за текущий период и сравните с выдаваемым

В нумерации пропускиУдалены документы или отменена запись после резервирования

Разрывы допустимы, но для счетов-фактур желательно задокументировать причину

Номер начинается с единицы в середине годаИзменена периодичность или префикс

Проверьте настройки нумерации в конфигураторе и наличие новых префиксов

Стандартный приём восстановления — «подтолкнуть» нумератор: создать тестовый документ, вручную указать ему последний корректный номер текущего периода, записать и удалить (или переписать правильно). После этого автонумерация продолжится с нужного значения. В типовых конфигурациях также встречаются встроенные обработки исправления нумерации — проверьте разделы администрирования и сервиса.

Типичные ошибки при работе с номерами
01
Редактировать номер проведённого документа задним числом — нарушается связь с печатными формами и отчётностью, уже переданной контрагентам.
02
Вызвать УстановитьНовыйНомер() и не записать объект — в нумерации появляется разрыв, а при повторном вызове возможна путаница.
03
Менять периодичность нумерации в середине года — старые и новые документы оказываются в разных сериях, нумерация дублируется.
04
Игнорировать префиксы при обмене между базами — одинаковые номера из разных узлов создают конфликты при синхронизации.

Проверка результата и контроль уникальности

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

Контрольные точки

Как проверить результат

Номер нового документа
Норма

На единицу больше максимального номера за период с тем же префиксом

Тревожный признак

Номер меньше существующих или дублирует уже записанный документ

Префикс номера
Норма

Соответствует организации или узлу обмена

Тревожный признак

Префикс отсутствует либо принадлежит другой базе

Список документов за период
Норма

Нумерация последовательна, без неожиданных серий

Тревожный признак

Появилась вторая серия номеров или счёт с единицы

Для программной проверки уникальности можно выполнить запрос по таблице документа с отбором по периоду и номеру. Если запрос возвращает более одной строки — дубль существует, и его нужно устранить до продолжения работы.

Итог

Что важно запомнить

Номер присваивается при записи документа; программно его резервируют методом УстановитьНовыйНомер() с обязательной последующей записью. Периодичность, длина и префиксы настраиваются в конфигураторе, а сбои нумерации исправляются ручной установкой последнего корректного номера с последующей проверкой списка документов.

Частые вопросы

Можно ли узнать следующий номер, не создавая документ?

Штатного метода «подсмотреть» будущий номер без резервирования нет. Программно можно найти максимальный номер запросом по таблице документа за нужный период и увеличить его на единицу, но этот способ не гарантирует уникальность при параллельной работе пользователей. Надёжный вариант — создать объект, вызвать УстановитьНовыйНомер() и записать документ.

Почему поле «Номер» недоступно для редактирования?

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

Что делать, если нумерация исчерпала длину номера?

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

Как сделать нумерацию с префиксом организации?

В типовых конфигурациях префиксация по организации обычно включается в настройках (раздел администрирования, параметры нумерации или префиксации). В собственной конфигурации префикс формируется в обработчике события ПриУстановкеНовогоНомера модуля объекта, где можно задать любую логику формирования префикса.

Опасны ли разрывы в нумерации счетов-фактур?

Сами по себе пропуски номеров не являются нарушением: законодательство требует последовательности, но не запрещает разрывы, возникшие из-за удалённых или испорченных документов. Однако массовые разрывы могут вызвать вопросы при проверке, поэтому причину пропусков желательно фиксировать, а удаление документов — ограничивать правами.

Как получить номер документа при обмене между базами?

При загрузке из другой базы номер обычно приходит вместе с объектом и присваивается напрямую свойству Номер. Чтобы избежать конфликтов, в узлах обмена настраивают разные префиксы для каждой базы. Если нужен новый локальный номер вместо пришедшего — после загрузки вызовите УстановитьНовыйНомер() и запишите объект.