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

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

Где хранятся нумераторы 1С и как управлять нумерацией

Разбираем, где хранятся нумераторы 1С: объект «Нумераторы» в конфигураторе, нумерация документов и справочников, ручной ввод, сброс счётчиков и типичные проблемы.

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

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

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

Как платформа 1С присваивает номера по умолчанию

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

Из этого следуют важные практические последствия. Если удалить последний созданный документ, следующий новый документ получит тот же номер повторно — для платформы это не ошибка, а штатное поведение. Если же вручную ввести номер, больший текущего максимума (например, 99999), все последующие номера будут отсчитываться уже от него, и вернуть компактную нумерацию станет сложнее.

Такой подход означает, что «нумератор» как физическая таблица со счётчиком в стандартном механизме отсутствует. Информация о нумерации фактически хранится в самих документах — в поле «Номер» каждой записи. Это первое и главное место, где следует искать данные о нумерации.

Объект «Нумераторы» в конфигураторе

Явные нумераторы хранятся в дереве конфигурации. Чтобы их увидеть, откройте конфигуратор, перейдите в ветку «Общие» и найдите узел «Нумераторы». В типовых конфигурациях там обычно присутствуют предопределённые нумераторы, например для нумерации договоров или иных объектов, где требуется сквозная независимая последовательность.

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

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

Настройки нумерации конкретного документа или справочника

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

  • Периодичность — в пределах какого интервала нумерация начинается заново (год, квартал, месяц, день или неперiodическая).
  • Контроль уникальности — запрещает ли платформа сохранение двух объектов с одинаковым номером.
  • Автонумерация — присваивает ли система номер автоматически при создании объекта.
  • Тип и длина номера — строковый или числовой формат и максимальная длина.
  • Нумератор — ссылка на общий нумератор, если объект использует внешнюю последовательность.

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

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

Где искать префиксы и нумерацию в типовых конфигурациях

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

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

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

bsl
// Пример: поиск максимального номера документа за год
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(РеализацияТоваровУслуг.Номер) КАК МаксНомер
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоГода И &КонецГода";

Как восстановить или сбросить нумерацию

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

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

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

Типичные проблемы и их причины

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

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

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

Типичные ошибки
01
Ручной ввод произвольного большого номера — все последующие документы начнут отсчёт от него, и компактная нумерация будет потеряна.
02
Удаление документов из середины периода — появляются пропуски в номерах, что вызывает вопросы при проверках.
03
Правка служебных таблиц базы напрямую через SQL — нарушение целостности и риск дублирования номеров.
04
Отключение контроля уникальности ради «удобства» — появление документов с одинаковыми номерами.

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

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

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

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

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

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

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

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

Формат номера
Норма

Соответствует длине и типу из свойств объекта, префикс на месте

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

Обрезанные символы, пропавший префикс, буквы в числовом номере

Запись документа
Норма

Проходит без сообщений о нарушении уникальности

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

Ошибка «Номер не уникален» при сохранении

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

Итог

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

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

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

Можно ли посмотреть текущее значение счётчика нумератора?

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

Почему после удаления документа новый получает тот же номер?

Потому что платформа вычисляет следующий номер как максимальный плюс один. Удалённый документ перестаёт учитываться, и освободившийся номер снова становится «следующим». Это штатное поведение, а не ошибка.

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

В свойствах документа на вкладке «Нумерация» установите периодичность «В пределах года». Тогда с началом нового года отсчёт начнётся с единицы автоматически. Изменение применяется после обновления конфигурации базы данных.

Что делать, если при записи появляется ошибка «Номер не уникален»?

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

Где меняется длина и формат номера документа?

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

Можно ли перенумеровать документы за прошлый период?

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