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

· 9 мин

Содержание

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

Нумератор нужен, когда несколько видов документов должны вести общий сквозной счётчик — например, чтобы приходные и расходные кассовые ордера шли в одной непрерывной последовательности. Ниже — как добавить нумератор в 1С 8.3, назначить его документам, задать префикс в коде и избежать дублей номеров в распределённой базе.

Что такое нумератор и когда он действительно нужен

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

Нумератор стоит заводить в трёх случаях:

  • 🔗 несколько видов документов должны иметь единую сквозную нумерацию (один диапазон номеров на всех);
  • 📁 у большого числа документов одинаковые настройки номера, и их удобно описать один раз в общем объекте;
  • 🧾 требуется, чтобы номера не пересекались между родственными документами (контроль уникальности в пределах группы).

Разница видна на номерах. Без нумератора приходные ордера идут 1, 2, 3, а расходные — своей чередой 1, 2, 3. С общим нумератором последовательность одна на двоих: приходный №1, расходный №2, приходный №3. Это и есть сквозная нумерация, которую часто требует учётная политика.

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

Нумератор и последовательность документов — разные объекты. Последовательность отвечает за порядок проведения (актуальность движений), а нумератор — только за номера. Не путайте их.

Что подготовить перед изменением конфигурации

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

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

Перед добавлением нумератора
Выполнено: 0 / 5

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

Создание нумератора в Конфигураторе: порядок действий

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

  1. В дереве конфигурации раскройте ветку Общие и найдите узел Нумераторы.
  2. Нажмите правой кнопкой → Добавить (или клавишу Ins). Откроется окно свойств нового объекта.
  3. Задайте Имя латиницей или кириллицей без пробелов — например, НумераторКассовыхОрдеров. Синоним (понятное название для списка объектов) заполнится автоматически, при желании поправьте его вручную. Имя должно быть уникальным среди нумераторов и говорить о назначении объекта — через полгода вы сами скажете спасибо за понятное имя вместо Нумератор1.
  4. Укажите Тип номера, Длину номера, Периодичность и при необходимости включите Проверку уникальности (см. таблицу ниже).
  5. Закройте свойства и выполните обновление конфигурации базы данных командой Обновить конфигурацию базы данных (клавиша F7). На этом шаге потребуется монопольный доступ.

Основные свойства нумератора и за что они отвечают:

СвойствоЗначенияЗа что отвечает
Тип номераЧисло / Строка«Строка» нужна, если в номере будут буквы или префикс
Длина номерацелое числоМаксимальная длина номера; для строкового типа учитывает префикс
ПериодичностьНепериодический, в пределах года / квартала / месяца / дняКак часто счётчик сбрасывается в начало
Проверка уникальностивкл/выклКонтроль, чтобы в пределах периода не было двух одинаковых номеров
Автонумерациявкл/выклПлатформа сама присваивает следующий номер при записи нового документа

Периодичность выбирают под учётную задачу:

  • Непериодический — счётчик никогда не сбрасывается. Подходит для сквозной нумерации договоров и внутренних документов, где важна непрерывность на всё время работы.
  • В пределах года — номера обнуляются 1 января. Самый частый вариант для первичных документов: с нового года снова №1.
  • В пределах квартала / месяца / дня — счётчик стартует заново в начале периода. Используется редко, когда нужна помесячная или посуточная отчётная нумерация.

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

Длину номера берите с запасом. Если счётчик дорастёт до значения длиннее заданного, при записи документа появится ошибка о превышении допустимой длины номера. Для числового типа 9–10 знаков хватает надолго.

Как назначить нумератор документу

Создать объект мало — его нужно привязать к документам, иначе он ни на что не влияет.

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

После привязки собственные настройки номера у документа (тип, длина, периодичность) берутся из нумератора — отдельно их задавать уже не нужно. На закладке Нумерация они станут недоступны для правки: это признак, что документ работает по общему объекту, а не по своим настройкам. Если в один нумератор добавить ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер, они пойдут в единой последовательности: за №5 приходника следующим будет №6 расходника.

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

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

Префикс и своя нумерация во встроенном языке 1С

Программно сам объект-нумератор во время работы не создают — метаданные описываются в Конфигураторе. А вот логику выдачи номера можно полностью контролировать кодом. За это отвечает обработчик события ПриУстановкеНовогоНомера в модуле объекта документа.

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

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

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

Платформа подставит КО- перед автоматически сгенерированным числом и дополнит его нулями до заданной длины. Префикс входит в длину номера, поэтому при КО- и четырёх знаках счётчика задайте длину не меньше 7.

Если нужна полностью своя схема (например, номер из кода подразделения и порядкового значения), установите СтандартнаяОбработка = Ложь и присвойте значение Номер самостоятельно. В этом случае уникальность и последовательность вы обеспечиваете сами — обычно запросом к уже записанным документам за период, чтобы найти максимальный номер. Если в точном алгоритме запроса не уверены, безопаснее ограничиться префиксом через стандартную обработку, а не писать хрупкий код генерации.

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

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

Сквозная нумерация в распределённой базе (РИБ) без дублей

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

Решение одно: у каждого узла должен быть свой префикс. Тогда номера физически не пересекаются.

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

При проектировании РИБ заложите префикс сразу, ещё до первого обмена. Вводить его, когда дубли уже образовались, придётся вместе с ручным исправлением задвоенных номеров — это дольше и больнее.

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

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

Частые ошибки при настройке нумерации

Большинство проблем с нумераторами сводится к нескольким типовым ситуациям. Разберите по симптому:

Диагностика: выберите симптом

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

Можно ли изменить длину номера, когда документы уже созданы?
Да. Увеличить длину можно без потери данных — ранее записанные номера сохранятся. Уменьшать длину ниже уже существующих номеров нельзя: платформа не сможет их сохранить.
Чем нумератор отличается от нумерации в свойствах самого документа?
Свойства документа задают независимый счётчик только для него. Нумератор — общий объект: назначьте его нескольким документам, и они разделят единую последовательность номеров.
Нужно ли программирование, чтобы добавить префикс?
В типовых конфигурациях на БСП — нет, префикс базы задаётся в настройках. В собственной конфигурации префикс добавляют кодом в обработчике ПриУстановкеНовогоНомера.
Почему у двух документов одинаковый номер, хотя включена проверка уникальности?
Проверка уникальности контролирует номера только в пределах периодичности и только среди документов с одним нумератором. Дубли между узлами РИБ или между разными нумераторами она не ловит.
Сбрасывается ли номер при копировании документа?
Нет. Копия нового документа при записи получает очередной свободный номер по правилам нумератора — старый номер не переносится.