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

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

Как создать свой нумератор в 1С

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

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

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

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

Когда нужен собственный нумератор, а не стандартный

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

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

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

Сравнение вариантов

Стандартная автонумерация

Подходит для одного вида документов без особых требований. Настройка минимальна, но нет сквозной нумерации и гибкого сброса.

Объект «Нумераторы»

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

Программная нумерация

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

Создание нумератора в конфигураторе: пошагово

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

Порядок действий следующий. Откройте дерево конфигурации, найдите ветку «Общие» → «Нумераторы» и добавьте новый элемент. Задайте имя, например «НумераторПервичныхДокументов». Затем настройте ключевые свойства: тип номера (число или строка), длину номера и периодичность.

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

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

Ключевые свойства нумератора: тип, длина, периодичность

Тип номера определяет, какие значения может принимать номер. Числовой тип подходит для простой последовательности и обеспечивает естественную сортировку. Строковый тип нужен, если в номере будут буквы, дефисы или префиксы, но у него есть важная особенность: сортировка строк идёт посимвольно, поэтому «10» окажется раньше «2», если не использовать лидирующие нули.

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

Периодичность определяет, в каких границах нумерация ведётся непрерывно: в пределах года, квартала, месяца, дня или непериодически. Например, при периодичности «Год» с 1 января нумерация начнётся заново. Это удобно для счетов-фактур и других документов, где принято начинать отсчёт с нового периода.

СвойствоВариантыНа что влияет
Тип номераЧисло / СтрокаФормат номера и порядок сортировки
Длина номераЦелое числоМаксимальное число уникальных номеров за период
ПериодичностьГод, квартал, месяц, день, непериодическийМомент сброса нумерации
Контроль уникальностиВключается в свойствах документаЗапрет дублирующихся номеров в пределах периода

Программная нумерация через ОбработкаПолученияНомера

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

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

bsl
Процедура ОбработкаПолученияНомера(СтандартнаяОбработка, Номер, Дата)
    СтандартнаяОбработка = Ложь;
    Префикс = Организация.Префикс;
    Номер = Префикс + "-" + Формат(Год(Дата), "ЧГ=0") + "-" + Формат(ПолучитьОчереднойНомер(), "ЧЦ=5; ЧВН=; ЧГ=0");
КонецПроцедуры

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

Префиксы и нумерация по организациям

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

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

Учтите, что префикс расходует длину номера. Если длина номера документа — 11 символов, а префикс занимает 3, на числовую часть остаётся 8 знаков. Планируйте длину с учётом самого длинного возможного префикса.

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

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

Частая проблема — «дырки» в нумерации, когда документ создали, но не записали или удалили. Это нормальное поведение платформы: номер выдаётся при создании объекта и не возвращается в пул. Для большинства учётных задач пропуски допустимы, но если требуется строгая непрерывность, потребуется отдельный механизм перенумерации.

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

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

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

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

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

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

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

Последовательность номеров
Норма

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

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

Номера повторяются или идут вразнобой

Смена периода
Норма

При периодичности «Год» с 1 января нумерация начинается заново

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

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

Документы разных видов
Норма

Общая сквозная нумерация, если виды привязаны к одному нумератору

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

Каждый вид нумеруется отдельно — нумератор не привязан

Типичные ошибки
01
Недостаточная длина номера — при исчерпании диапазона новые документы не смогут получить корректный номер
02
Строковый номер без лидирующих нулей — сортировка в журналах становится «1, 10, 2», что мешает поиску
03
Программная нумерация без проверки на конкурентный доступ — в многопользовательской базе появляются дубли
04
Изменение свойств нумератора в рабочей базе без копии — риск конфликтов с существующими номерами
05
Отключение стандартной обработки без присвоения номера во всех ветках кода — документы с пустыми номерами

Ограничения и границы самостоятельной настройки

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

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

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

Итог

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

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

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

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

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

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

Номер выдаётся в момент создания объекта. Если документ создали, но не записали, закрыли без сохранения или удалили, выданный номер не возвращается в пул. Это штатное поведение платформы, а не признак ошибки.

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

В свойствах нумератора установите периодичность «В пределах года». Тогда с началом нового календарного года отсчёт номеров начнётся сначала. Аналогично работают периодичности «Квартал», «Месяц» и «День».

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

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

Что делать, если номера дублируются после обмена между базами?

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

Можно ли настроить нумератор без конфигуратора, в режиме Предприятия?

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