Как управлять нумерацией документов в программе 1С
Содержание
Номер документу в 1С присваивается автоматически в момент записи: платформа берёт следующий свободный номер в пределах установленного периода и добавляет к нему префикс организации. Менять порядок вручную в большинстве случаев не нужно — но если номер «уехал», появился дубль или бухгалтерия просит начать новый год с единицы, настройки есть, и лежат они в разных местах.
Разберём всё по порядку: откуда берётся номер и префикс, как задать длину и периодичность, как поправить номер конкретного документа, сбросить счётчик на новый период и что делать с задвоением номеров. В конце — как управлять нумерацией из кода, если типовых настроек не хватает.
Откуда берётся номер документа и как работает автонумерация
У каждого документа есть стандартный реквизит Номер. При записи нового документа 1С присваивает ему следующий по порядку номер — это и есть автонумерация. Включена она по умолчанию у всех документов типовых конфигураций.
Номер складывается из двух частей:
- 🔢 Порядковый счётчик — растёт на единицу с каждым новым документом этого вида.
- 🏷️ Префикс — буквенно-цифровая метка организации (и, в распределённых базах, узла). Например, в номере
АА-000000012префикс — этоАА-.
Важный момент: счётчик ведётся отдельно для каждого вида документа. У «Реализации» своя нумерация, у «Поступления» — своя. Поэтому номер 12 у реализации и номер 12 у поступления — это нормально, а не ошибка.
Номер присваивается при записи документа, а не при проведении. Пока документ не записан (открыт в форме как новый), поле номера часто пустое или показывает <авто> — это ожидаемо. Как только вы нажмёте «Записать» или «Провести», 1С подставит очередной свободный номер. При копировании документа (Создать на основании или Ctrl+F9) номер не переносится — копия получит свой новый.
Периодичность нумерации задаётся в конфигураторе для каждого документа (свойство Нумерация → Периодичность). Варианты:
| Периодичность | Когда счётчик обнуляется |
|---|---|
| Непериодическая | Никогда, сквозная нумерация за всё время |
| В пределах года | 1 января |
| В пределах квартала | 1-го числа нового квартала |
| В пределах месяца | 1-го числа нового месяца |
| В пределах дня | каждый день заново |
В типовых конфигурациях у большинства документов стоит «в пределах года» — поэтому 1 января счётчик сам стартует с единицы, вручную ничего делать не нужно.
Ведущие нули в счётчике (000000012) — это не отдельная настройка, а способ отображения: платформа выравнивает номер до заданной длины. Сколько именно нулей вы видите, зависит от длины реквизита, а не от количества документов.
Если видите, что номера документов разных дат идут не подряд, проверьте дату документа. Автонумерация выдаёт номер по дате документа, а не по дате ввода: документ, проведённый задним числом, встанет в ряд по своей дате, а не в конец.
Где задать префикс и длину номера
Префикс чаще всего привязан к организации. В «1С:Бухгалтерии 8» (ред. 3.0) он задаётся в карточке организации: Главное → Организации → <ваша организация>, поле «Префикс» (два символа). Там же, в разделе с реквизитами, этот префикс и правится.
Зачем нужен префикс:
- 📂 Разделить документы нескольких организаций в одной базе — у каждой свой префикс (
ТД,ПРи т. д.). - 🔀 Избежать пересечения номеров в распределённой базе (РИБ) — у каждого узла свой префикс информационной базы, он задаётся при настройке обмена.
Полный номер при этом выглядит как префикс базы + префикс организации + счётчик. Именно в таком виде он попадает и в списки документов, и в печатные формы, и в реквизит «Основание» связанных документов — поэтому менять префикс задним числом у уже проведённых документов не стоит: в печатных формах останется старый номер, а в базе — новый.
Если изменить префикс организации, новые документы начнут нумероваться с ним, а у старых номер не изменится автоматически. То есть префикс влияет только на документы, созданные после правки.
Длина номера — это свойство стандартного реквизита, оно настраивается только в конфигураторе: откройте документ → стандартные реквизиты → Номер → свойство Длина. Обычно в типовых документах длина номера с запасом (9–11 символов вместе с префиксом), и упереться в неё при нормальной работе почти нереально.
Если база переведена на поддержку без возможности изменения, менять длину номера в конфигураторе нельзя без снятия с поддержки или расширения конфигурации. Не трогайте стандартные реквизиты типовой конфигурации «на живую» — это сорвёт автоматическое обновление.
Тип номера тоже задаётся там же и бывает строковым или числовым. В типовых конфигурациях он почти всегда строковый — иначе префикс с буквами просто не поместился бы.
Как изменить номер документа вручную
По умолчанию поле Номер в форме документа заблокировано для ввода — это защита от случайной правки. Чтобы ввести номер руками:
- Откройте нужный документ.
- Щёлкните по полю «Номер» в шапке.
- 1С предупредит, что ручное изменение может нарушить порядок нумерации. Подтвердите.
- Введите свой номер и запишите документ.
После ручного ввода автонумерация для этого документа отключается — он сохранит заданный номер. Следующий новый документ 1С продолжит нумеровать автоматически от последнего автоматического значения, а не от того, что вы вписали вручную.
Перед массовой правкой номеров в рабочей базе сделайте резервную копию. Ручное вмешательство в номера — частый источник последующих дублей и «дыр» в нумерации.
Когда ручная правка действительно нужна:
- Восстанавливаете исходный номер после ошибочного перепроведения.
- Переносите документы из другой базы и хотите сохранить прежние номера.
- Приводите нумерацию к требованию контрагента или учётной политики.
В остальных случаях лучше оставить автонумерацию: она гарантирует уникальность и непрерывность внутри вида документа.
Как начать новый год или период с первого номера
Если у документа периодичность «в пределах года», счётчик сбросится сам в полночь 1 января — первый документ года получит номер 1 (с учётом префикса). Это штатное поведение, никаких действий не требуется.
Нештатные случаи, когда счётчик нужно подтолкнуть вручную:
- 🗓️ Нужно начать с единицы не с нового года, а с середины периода. Типовыми настройками это не делается. Самый безопасный путь — изменить номер первого документа нового отрезка вручную (см. раздел выше), а дальше 1С продолжит от него.
- 🔁 Нужно сменить саму периодичность (например, перейти с годовой на квартальную). Это правка свойства
Нумерация → Периодичностьв конфигураторе — задача для специалиста, и применять её к типовой конфигурации стоит только через расширение.
Не пытайтесь «сбросить год», удаляя документы прошлого периода. Удаление помеченных объектов — отдельная операция, и на счётчик автонумерации текущего года она не влияет. Счётчик нового года стартует от нуля независимо от прошлогодних документов.
Разберём на примере. У «Реализации» периодичность «в пределах года». 29 декабря выписан документ ТД-000000457. Первый документ, выписанный 9 января, получит номер ТД-000000001 — счётчик стартовал заново, потому что сменился год. А вот если ту же «Реализацию» датировать 30 декабря, она продолжит прошлогодний ряд — ТД-000000458, потому что по дате относится ещё к старому периоду.
Если после смены года номер всё равно не обнулился — почти наверняка у документа стоит непериодическая (сквозная) нумерация. Проверьте свойство периодичности для этого вида документа в конфигураторе. Для большинства первичных документов типовых конфигураций годовая периодичность стоит изначально, и специально её включать не требуется.
Почему появляются одинаковые номера и как их убрать
Дубли номеров — это когда у двух документов одного вида в одном периоде и с одним префиксом совпал номер. Выглядит пугающе, но причин немного, и каждая лечится.
Чтобы найти дубли, постройте список документов нужного вида, отсортируйте по номеру (щелчок по заголовку колонки «Номер») и пролистайте — совпадающие значения встанут рядом. Для разовой проверки этого достаточно; для регулярной удобнее запрос в консоли запросов по полю Номер с группировкой и отбором по количеству больше одного.
Отдельно стоит сказать про РИБ. Пока у узлов разные префиксы, документы не пересекаются даже при независимой нумерации — префикс и есть разделитель. Если дубли уже возникли из-за одинаковых префиксов, недостаточно просто поменять настройку на будущее: старые пересекающиеся документы останутся с совпадающими номерами, и перенумеровать их придётся вручную в одном из узлов. Поэтому префиксы узлов задают до начала обмена, а не после.
Самого по себе дубля номеров платформа не запрещает — контроль уникальности у стандартного реквизита Номер может быть отключён. Поэтому полагаться стоит именно на автонумерацию с префиксами, а не на то, что программа «не даст» ввести одинаковые номера.
Управление нумерацией из кода
Если типовых настроек не хватает (нестандартный формат номера, свой алгоритм префикса), нумерацию можно задать программно.
Платформа вызывает у документа событие ПриУстановкеНовогоНомера в момент присвоения автоматического номера. В нём доступен префикс — в него и подставляют свою логику:
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
// Подставляем префикс по организации и году
Префикс = СокрЛП(Организация.Префикс) + Формат(Год(Дата), "ДФ=гг") + "-";
КонецПроцедуры
Если оставить СтандартнаяОбработка истинной (по умолчанию), платформа сама добавит к префиксу порядковый счётчик нужной длины. Этого достаточно в большинстве задач — вы управляете только префиксом, а уникальность обеспечивает платформа.
Чтобы присвоить документу следующий свободный номер из кода (например, при программном создании), у объекта документа есть метод:
ДокОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
ДокОбъект.Дата = ТекущаяДата();
ДокОбъект.УстановитьНовыйНомер(); // платформа подберёт свободный номер
ДокОбъект.Записать();
В метод УстановитьНовыйНомер() можно передать префикс строкой, если нужно переопределить его для конкретного документа.
Полностью отключать стандартную обработку и собирать номер вручную стоит только тогда, когда вы сами гарантируете уникальность. Иначе легко получить те самые дубли. Для типовых конфигураций весь нестандартный код размещайте в расширении, а не в основной конфигурации — иначе потеряете возможность штатно обновляться.
Перед внедрением своего алгоритма проверьте его на копии базы: создайте десяток документов, убедитесь, что номера идут подряд, префикс верный, а при переходе через период счётчик ведёт себя как ожидалось.