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

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

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

Как создать и настроить нумератор в 1С: стандартные механизмы нумерации документов, периодичность, префиксы, ручная нумерация в коде и типичные ошибки.

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

Есть два пути: использовать штатные средства платформы (свойства объекта метаданных и стандартные обработки) или реализовать собственную логику нумерации в коде. Первый вариант проще и надёжнее, второй даёт гибкость — например, позволяет формировать номера вида «СЧ-000123/МСК» с учётом подразделения и даты.

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

Платформа 1С:Предприятие хранит для каждого вида документов последний выданный номер и при записи нового объекта автоматически увеличивает его на единицу. Номер — строковое значение, поэтому он может содержать буквы, дефисы и ведущие нули: «000000001», «АВ-123», «2026/0077».

Ключевые свойства нумерации задаются в конфигураторе на вкладке «Нумерация» в палитре свойств объекта (документа, справочника, бизнес-процесса):

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

Важно понимать, что уникальность номера проверяется только в пределах периодичности. Два документа с номером «1» в январе и феврале при месячной периодичности — нормальная ситуация, а при непериодической нумерации — ошибка.

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

Чтобы настроить нумератор для нового документа, откройте конфигуратор, найдите нужный объект в дереве метаданных и вызовите палитру свойств (правый клик → «Свойства»). Перейдите на вкладку «Нумерация» и задайте параметры.

Выбор периодичности

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

Длина номера и префикс

Длину номера задавайте с запасом: если в год создаётся до 10 000 документов, минимальная длина — 5 символов, но разумно поставить 8–11, чтобы влезали префиксы и служебные символы. Префикс (например, код организации или базы в распределённой системе) настраивается через подписку на событие «ПриУстановкеНовогоНомера» или через механизм префиксации в типовых конфигурациях.

Порядок действий
  1. 1
    Откройте конфигуратор и найдите нужный документ или справочник в дереве метаданных
  2. 2
    В палитре свойств перейдите на вкладку «Нумерация»
  3. 3
    Задайте длину номера с запасом (например, 11 символов)
  4. 4
    Выберите периодичность: год для финансовых документов, месяц или день для высокооборотных
  5. 5
    Включите контроль уникальности и автонумерацию
  6. 6
    Обновите конфигурацию базы данных (F7) и проверьте создание нового документа

Как добавить префикс к номеру

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

В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP) префикс базы задаётся в настройках синхронизации или в реквизитах организации, и платформа подставляет его автоматически. В собственной конфигурации префикс добавляется через подписку на событие:

Процедура УстановитьПрефиксПриУстановкеНовогоНомера(Источник, СтандартнаяОбработка, Префикс) Экспорт

Префикс = Константы.ПрефиксОрганизации.Получить();

КонецПроцедуры

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

Собственный нумератор в коде

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

Классическая схема: номер хранится в константе или в регистре сведений с измерениями (организация, год, вид документа). В обработчике «ПриУстановкеНовогоНомера» или «ОбработкаЗаполнения» код читает текущее значение, увеличивает его и записывает обратно:

Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)

СтандартнаяОбработка = Ложь;

Менеджер = РегистрыСведений.Нумераторы.СоздатьМенеджерЗаписи();

Менеджер.Организация = Организация;

Менеджер.Год = Год(Дата);

Менеджер.Прочитать();

СледующийНомер = Менеджер.ТекущийНомер + 1;

Менеджер.ТекущийНомер = СледующийНомер;

Менеджер.Записать();

Номер = Префикс + Формат(СледующийНомер, "ЧЦ=9; ЧВН=");

КонецПроцедуры

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

Перенумерация существующих документов

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

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

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

Типичные ошибки
01
Слишком маленькая длина номера: при переполнении платформа не сможет выдать новый номер, и пользователи не смогут записывать документы до вмешательства разработчика
02
Ручная правка номера пользователем: если ввести вручную номер «999» при текущем «15», штатный нумератор продолжит с 1000 и быстро исчерпает диапазон
03
Собственный нумератор без блокировок: при одновременной работе пользователей появляются дубли номеров
04
Смена периодичности в середине года: старые и новые документы оказываются в разных логиках нумерации, отчёты расходятся
05
Перенумерация проведённых документов без проверки ссылок: печатные формы и выгрузки перестают совпадать с базой

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

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

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

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

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

Последовательность номеров новых документов
Норма

Каждый следующий номер на единицу больше предыдущего в пределах периода

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

Номера дублируются или скачут большими шагами

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

Префикс соответствует организации или базе и не меняется произвольно

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

Префикс пустой, хотя настроен, или отличается у документов одной организации

Поведение на границе периода
Норма

При периодичности «год» первый документ нового года получает номер 1

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

Нумерация продолжается с прошлогоднего значения

Работа нескольких пользователей
Норма

При одновременном создании документов дублей нет

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

Появляются одинаковые номера у разных документов

Часто задаваемые вопросы

Можно ли сделать номер документа числовым без ведущих нулей?

Да, но Ведущие нули добавляются для выравнивания сортировки: без них «10» в списке окажется раньше «2». Если нули мешают в печатных формах, уберите их при выводе функцией Формат() или сокращением строки, не меняя сам номер в базе.

Почему номер присваивается с пропусками?

Платформа резервирует номер при создании объекта, и если пользователь закрыл форму без записи или произошёл откат транзакции, зарезервированное значение теряется. Это штатное поведение. Для документов, где непрерывность критична (например, счета-фактуры), номер лучше присваивать при проведении, а не при создании.

Как сделать отдельную нумерацию для каждой организации в одной базе?

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

Что делать, если длина номера исчерпана и документы не записываются?

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

Можно ли начать нумерацию не с единицы, а с произвольного числа?

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

Опасно ли перенумеровывать документы прошлых периодов?

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

Итог

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

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