Разработка и Конфигурация · 11 мин
Где хранятся нумераторы 1С и как управлять нумерацией
Разбираем, где хранятся нумераторы 1С: объект «Нумераторы» в конфигураторе, нумерация документов и справочников, ручной ввод, сброс счётчиков и типичные проблемы.
Нумераторы в 1С — это механизм, который отвечает за автоматическое присвоение номеров документам, кодов справочникам и другим объектам. Понимание того, где именно хранятся нумераторы и как платформа вычисляет следующий номер, помогает быстро решать типовые проблемы: сбитую нумерацию после ручного вмешательства, «дыры» в последовательности номеров, дубли при обмене данными между базами.
Ключевой момент: в большинстве случаев платформа 1С не хранит отдельный счётчик для каждого вида документов. Номер вычисляется динамически — система находит максимальный существующий номер за текущий период (обычно год) и прибавляет единицу. Именно поэтому удаление последнего документа или ручная правка номера сразу влияет на следующий присваиваемый номер.
При этом в конфигурации существует отдельный объект «Нумераторы», который можно использовать для явного контроля последовательностей, а в типовых конфигурациях есть подсистемы периодической нумерации и префиксации. Ниже разберём все места, где «живёт» логика нумерации, и практические сценарии работы с ней.
Как платформа 1С присваивает номера по умолчанию
Когда пользователь создаёт новый документ, платформа определяет для него номер автоматически. Алгоритм простой: система ищет максимальный номер среди документов этого вида в пределах периодичности нумерации (как правило, в пределах года) и с учётом действующих префиксов, затем увеличивает найденное значение на единицу. Результат подставляется в поле «Номер» при записи объекта.
Из этого следуют важные практические последствия. Если удалить последний созданный документ, следующий новый документ получит тот же номер повторно — для платформы это не ошибка, а штатное поведение. Если же вручную ввести номер, больший текущего максимума (например, 99999), все последующие номера будут отсчитываться уже от него, и вернуть компактную нумерацию станет сложнее.
Такой подход означает, что «нумератор» как физическая таблица со счётчиком в стандартном механизме отсутствует. Информация о нумерации фактически хранится в самих документах — в поле «Номер» каждой записи. Это первое и главное место, где следует искать данные о нумерации.
Объект «Нумераторы» в конфигураторе
Явные нумераторы хранятся в дереве конфигурации. Чтобы их увидеть, откройте конфигуратор, перейдите в ветку «Общие» и найдите узел «Нумераторы». В типовых конфигурациях там обычно присутствуют предопределённые нумераторы, например для нумерации договоров или иных объектов, где требуется сквозная независимая последовательность.
Нумератор как объект метаданных задаёт правила формирования номера: тип (число или строка), длину, периодичность (в пределах года, квартала, месяца или неперiodический) и признак контроля уникальности. Сам по себе нумератор не привязан к конкретному документу — связь устанавливается в свойствах объекта, который будет этот нумератор использовать.
Физически счётчик нумератора хранится в служебных таблицах информационной базы и обновляется платформой автоматически при записи объектов, использующих этот нумератор. Редактировать его напрямую средствами SQL не рекомендуется: это нарушает целостность данных и может привести к дублированию номеров.
Настройки нумерации конкретного документа или справочника
Второе место, где определяется поведение нумерации, — свойства самого объекта метаданных. В конфигураторе откройте нужный документ или справочник и перейдите на вкладку «Нумерация». Именно здесь задаются ключевые параметры.
- Периодичность — в пределах какого интервала нумерация начинается заново (год, квартал, месяц, день или неперiodическая).
- Контроль уникальности — запрещает ли платформа сохранение двух объектов с одинаковым номером.
- Автонумерация — присваивает ли система номер автоматически при создании объекта.
- Тип и длина номера — строковый или числовой формат и максимальная длина.
- Нумератор — ссылка на общий нумератор, если объект использует внешнюю последовательность.
Если автонумерация отключена, пользователь обязан вводить номер вручную — платформа не будет подставлять значение. Если включён контроль уникальности, попытка записать документ с уже существующим номером завершится ошибкой. Эти настройки изменяются только в конфигураторе и требуют обновления конфигурации базы данных.
- 1Откройте конфигуратор и разверните ветку «Документы» или «Справочники».
- 2Дважды щёлкните по нужному объекту и перейдите на вкладку «Нумерация».
- 3Проверьте периодичность, автонумерацию, контроль уникальности и привязанный нумератор.
- 4При необходимости откройте Общие → Нумераторы и изучите свойства используемого нумератора.
Где искать префиксы и нумерацию в типовых конфигурациях
В типовых решениях (1С:Бухгалтерия, 1С:Управление торговлей и др.) поверх платформенного механизма работает прикладная подсистема префиксации. Префикс организации или информационной базы добавляется к номеру, чтобы избежать дублей при обмене данными между базами. Настройки префикса обычно находятся в карточке организации и в параметрах информационной базы (раздел администрирования, настройки синхронизации данных).
Кроме того, в типовых конфигурациях нумерация часто переопределяется программно — в подписках на события «ПриУстановкеНовогоНомера» и «ПриУстановкеНовогоКода». Эти обработчики находятся в общих модулях конфигурации. Если номер формируется «непонятно откуда» — например, содержит буквы филиала или обнуляется в неожиданный момент, — искать логику нужно именно там: через глобальный поиск по конфигурации по имени события.
Для поиска в конфигураторе используйте меню «Правка → Глобальный поиск по конфигурации» и ищите строку ПриУстановкеНовогоНомера. Найденные процедуры покажут, какой алгоритм формирует номер: сброс по дате, добавление префикса, пропуск «зарезервированных» диапазонов.
// Пример: поиск максимального номера документа за год
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(РеализацияТоваровУслуг.Номер) КАК МаксНомер
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоГода И &КонецГода";Как восстановить или сбросить нумерацию
Самая частая практическая задача — вернуть правильную последовательность после ручного вмешательства. Поскольку платформа отсчитывает номер от максимального существующего, восстановление сводится к корректировке этого максимума: найдите документ с «завышенным» номером и присвойте ему корректное значение либо удалите его, если он создан ошибочно.
Порядок безопасного восстановления выглядит так. Сначала отсортируйте журнал документов по номеру и найдите аномальные значения — например, номер с лишними цифрами или с неправильным префиксом. Затем исправьте номер вручную, соблюдая формат (длину и тип), заданный в конфигурации. После этого создайте тестовый документ и убедитесь, что ему присвоился ожидаемый следующий номер. Тестовый документ можно пометить на удаление.
В типовых конфигурациях также существуют служебные обработки обновления нумерации и механизм перенумерации при обмене. Перед любыми массовыми изменениями номеров сделайте резервную копию базы: номера документов участвуют в печатных формах, проводках и ссылках из других объектов, и ошибочная перенумерация способна нарушить отчётность.
Типичные проблемы и их причины
Проблема «двойных» номеров чаще всего возникает при отключённом контроле уникальности и параллельной работе пользователей или при обмене данными без префиксов. Решение — включить контроль уникальности в свойствах объекта и настроить префиксы для каждой базы-участника обмена.
Проблема «дыр» в нумерации — следствие удаления документов из середины последовательности. Для бухгалтерских документов это может быть критично, поэтому вместо удаления рекомендуется помечать документы на удаление и оставлять их в базе до конца отчётного периода.
Сбой нумерации после ручного ввода — результат того, что введённый номер стал новым максимумом. Лечится возвратом корректного номера, как описано в предыдущем разделе. Если же номер не сохраняется или сбрасывается при записи, проверьте подписки на события: возможно, прикладной код принудительно переопределяет номер.
Контрольные точки и проверка результата
После любых действий с нумерацией убедитесь, что система работает корректно. Создайте новый документ тестового вида и проверьте присвоенный номер: он должен быть на единицу больше максимального корректного номера за текущий период. Затем проверьте, что документ записывается без ошибок уникальности и что печатная форма выводит номер в ожидаемом формате с префиксом.
Как проверить результат
На единицу больше максимального корректного номера за период
Номер продолжает «завышенную» последовательность или дублирует существующий
Соответствует длине и типу из свойств объекта, префикс на месте
Обрезанные символы, пропавший префикс, буквы в числовом номере
Проходит без сообщений о нарушении уникальности
Ошибка «Номер не уникален» при сохранении
Если база распределённая или используется синхронизация, дополнительно проверьте, что после обмена номера в обеих базах не пересекаются: у каждой базы должен быть собственный префикс, заданный в настройках синхронизации.
Что важно запомнить
Нумераторы 1С находятся в конфигураторе (Общие → Нумераторы) и в свойствах объектов на вкладке «Нумерация», но по умолчанию номер вычисляется от максимального существующего. Восстановление нумерации — это корректировка максимального номера, а массовые изменения требуют резервной копии.
Частые вопросы
Можно ли посмотреть текущее значение счётчика нумератора?
Для стандартной автонумерации отдельного счётчика нет — ориентиром служит максимальный номер существующих документов за период. Его можно посмотреть, отсортировав журнал по номеру, или запросом к базе. Для явных нумераторов значение хранится в служебных таблицах и напрямую в интерфейсе не отображается.
Почему после удаления документа новый получает тот же номер?
Потому что платформа вычисляет следующий номер как максимальный плюс один. Удалённый документ перестаёт учитываться, и освободившийся номер снова становится «следующим». Это штатное поведение, а не ошибка.
Как сделать, чтобы нумерация начиналась заново каждый год?
В свойствах документа на вкладке «Нумерация» установите периодичность «В пределах года». Тогда с началом нового года отсчёт начнётся с единицы автоматически. Изменение применяется после обновления конфигурации базы данных.
Что делать, если при записи появляется ошибка «Номер не уникален»?
Значит, в базе уже есть объект с таким номером в пределах периода и префикса. Найдите дубль через журнал документов, измените его номер или удалите, после чего перезапишите свой документ. Также проверьте, не создают ли дубли процессы обмена данными без разнесённых префиксов.
Где меняется длина и формат номера документа?
В конфигураторе, в свойствах документа на вкладке «Данные» и «Нумерация»: задаются тип (число или строка) и длина номера. Увеличение длины безопасно, уменьшение может обрезать существующие номера — перед изменением сделайте резервную копию.
Можно ли перенумеровать документы за прошлый период?
Технически — да, с помощью обработок перенумерации, но делать это следует с осторожностью: номера уже попали в печатные формы, счета-фактуры и отчётность. Перенумерацию закрытых периодов проводите только после резервного копирования и согласования с ответственными за учёт.