Создание нумератора в 1С и настройка нумерации документов
Содержание
Нумератор создают в Конфигураторе в ветке Общие → Нумераторы, а затем назначают документу на закладке Нумерация. Частая ошибка новичка — заводить нумератор, чтобы «пронумеровать один документ». Для этого отдельный объект не нужен: у каждого документа своя нумерация есть по умолчанию.
Нумератор нужен, когда несколько видов документов должны вести общий сквозной счётчик — например, чтобы приходные и расходные кассовые ордера шли в одной непрерывной последовательности. Ниже — как добавить нумератор в 1С 8.3, назначить его документам, задать префикс в коде и избежать дублей номеров в распределённой базе.
Что такое нумератор и когда он действительно нужен
Нумератор — это общий объект метаданных, который хранит правила нумерации: тип номера, длину, периодичность и контроль уникальности. Сам по себе он документы не создаёт. Его назначают одному или нескольким документам, и все они начинают брать номера из одного счётчика.
Нумератор стоит заводить в трёх случаях:
- 🔗 несколько видов документов должны иметь единую сквозную нумерацию (один диапазон номеров на всех);
- 📁 у большого числа документов одинаковые настройки номера, и их удобно описать один раз в общем объекте;
- 🧾 требуется, чтобы номера не пересекались между родственными документами (контроль уникальности в пределах группы).
Разница видна на номерах. Без нумератора приходные ордера идут 1, 2, 3, а расходные — своей чередой 1, 2, 3. С общим нумератором последовательность одна на двоих: приходный №1, расходный №2, приходный №3. Это и есть сквозная нумерация, которую часто требует учётная политика.
А вот когда нумератор не нужен: если документу достаточно собственной независимой нумерации. Тогда настройки задают прямо в свойствах документа на закладке Нумерация, без отдельного объекта. Не усложняйте конфигурацию ради одного вида документа.
Нумератор и последовательность документов — разные объекты. Последовательность отвечает за порядок проведения (актуальность движений), а нумератор — только за номера. Не путайте их.
Что подготовить перед изменением конфигурации
Добавление нумератора и его привязка к документу меняют структуру конфигурации. Значит, понадобится обновление конфигурации базы данных, а оно требует монопольного доступа — все активные сеансы пользователей на это время прервутся.
Перед правкой рабочей базы сделайте резервную копию и выполняйте изменения в нерабочее время или на тестовой копии. Откатить структурную правку в проде без бэкапа сложно.
Если конфигурация типовая и стоит на поддержке поставщика, прямое изменение в основной конфигурации включит режим «изменяемый объект». Чаще правильнее добавить нумератор через расширение конфигурации — так типовую логику не ломаете, а обновления поставщика встают без конфликтов. В расширении создают заимствованный документ, добавляют свойство нумерации и загружают готовый файл расширения, после чего отдельно выполняют обновление конфигурации базы данных. Это чуть дольше, чем правка «в лоб», зато безопасно для будущих обновлений типовой.
Создание нумератора в Конфигураторе: порядок действий
Открывать базу нужно в режиме Конфигуратора под учётной записью с полными правами.
- В дереве конфигурации раскройте ветку
Общиеи найдите узелНумераторы. - Нажмите правой кнопкой →
Добавить(или клавишуIns). Откроется окно свойств нового объекта. - Задайте Имя латиницей или кириллицей без пробелов — например,
НумераторКассовыхОрдеров. Синоним (понятное название для списка объектов) заполнится автоматически, при желании поправьте его вручную. Имя должно быть уникальным среди нумераторов и говорить о назначении объекта — через полгода вы сами скажете спасибо за понятное имя вместоНумератор1. - Укажите Тип номера, Длину номера, Периодичность и при необходимости включите Проверку уникальности (см. таблицу ниже).
- Закройте свойства и выполните обновление конфигурации базы данных командой
Обновить конфигурацию базы данных(клавишаF7). На этом шаге потребуется монопольный доступ.
Основные свойства нумератора и за что они отвечают:
| Свойство | Значения | За что отвечает |
|---|---|---|
| Тип номера | Число / Строка | «Строка» нужна, если в номере будут буквы или префикс |
| Длина номера | целое число | Максимальная длина номера; для строкового типа учитывает префикс |
| Периодичность | Непериодический, в пределах года / квартала / месяца / дня | Как часто счётчик сбрасывается в начало |
| Проверка уникальности | вкл/выкл | Контроль, чтобы в пределах периода не было двух одинаковых номеров |
| Автонумерация | вкл/выкл | Платформа сама присваивает следующий номер при записи нового документа |
Периодичность выбирают под учётную задачу:
Непериодический— счётчик никогда не сбрасывается. Подходит для сквозной нумерации договоров и внутренних документов, где важна непрерывность на всё время работы.В пределах года— номера обнуляются 1 января. Самый частый вариант для первичных документов: с нового года снова №1.В пределах квартала/месяца/дня— счётчик стартует заново в начале периода. Используется редко, когда нужна помесячная или посуточная отчётная нумерация.
Выбранная периодичность работает в паре с проверкой уникальности: контроль дублей идёт именно в границах периода. То есть при периодичности «в пределах года» два документа с номером 5 в разных годах — это норма, а два номера 5 в одном году платформа при включённой проверке не даст записать.
Длину номера берите с запасом. Если счётчик дорастёт до значения длиннее заданного, при записи документа появится ошибка о превышении допустимой длины номера. Для числового типа 9–10 знаков хватает надолго.
Как назначить нумератор документу
Создать объект мало — его нужно привязать к документам, иначе он ни на что не влияет.
- Откройте нужный документ в дереве конфигурации (ветка
Документы). - Перейдите на закладку
Нумерация. - В свойстве
Нумераторвыберите созданный объект из списка. - Повторите для всех документов, которые должны делить общий счётчик.
- Обновите конфигурацию базы данных (
F7).
После привязки собственные настройки номера у документа (тип, длина, периодичность) берутся из нумератора — отдельно их задавать уже не нужно. На закладке Нумерация они станут недоступны для правки: это признак, что документ работает по общему объекту, а не по своим настройкам. Если в один нумератор добавить ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер, они пойдут в единой последовательности: за №5 приходника следующим будет №6 расходника.
Изменить привязку можно в любой момент — выбрать другой нумератор или очистить свойство, вернув документу собственную нумерацию. Но помните: уже записанные документы сохранят свои прежние номера, по новым правилам будут нумероваться только вновь создаваемые.
Проверить результат просто: в режиме 1С:Предприятие создайте по одному документу каждого вида и запишите — номера должны идти подряд, а не с единицы у каждого. Если документы попадают в общий журнал, удобно открыть его и убедиться, что нумерация сквозная по всей группе. Такую проверку стоит делать на тестовой копии до переноса правок в рабочую базу.
Префикс и своя нумерация во встроенном языке 1С
Программно сам объект-нумератор во время работы не создают — метаданные описываются в Конфигураторе. А вот логику выдачи номера можно полностью контролировать кодом. За это отвечает обработчик события ПриУстановкеНовогоНомера в модуле объекта документа.
Обработчик срабатывает один раз — в момент, когда платформа присваивает номер новому документу с пустым полем Номер. При перенумерации уже записанных документов он не вызывается, поэтому задним числом номера через него не меняются.
Самый частый сценарий — добавить буквенный префикс. Для этого тип номера должен быть Строка, а в модуль документа добавляют:
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
Префикс = "КО-";
КонецПроцедуры
Платформа подставит КО- перед автоматически сгенерированным числом и дополнит его нулями до заданной длины. Префикс входит в длину номера, поэтому при КО- и четырёх знаках счётчика задайте длину не меньше 7.
Если нужна полностью своя схема (например, номер из кода подразделения и порядкового значения), установите СтандартнаяОбработка = Ложь и присвойте значение Номер самостоятельно. В этом случае уникальность и последовательность вы обеспечиваете сами — обычно запросом к уже записанным документам за период, чтобы найти максимальный номер. Если в точном алгоритме запроса не уверены, безопаснее ограничиться префиксом через стандартную обработку, а не писать хрупкий код генерации.
Отдельно взвесьте, нужна ли вообще своя генерация. Стандартная автонумерация с нумератором и префиксом закрывает подавляющее большинство задач: сквозной счётчик, буквенный код, разделение по узлам. Полностью ручной номер оправдан, только когда формат номера жёстко задан внешним требованием — например, договором с контрагентом или отраслевым регламентом. Чем меньше своего кода в выдаче номера, тем меньше поводов для сбоев при параллельной записи документов.
Префикс можно хранить в константе или реквизите и подставлять в обработчике. Так один и тот же код даёт разные префиксы для разных организаций или подразделений.
Сквозная нумерация в распределённой базе (РИБ) без дублей
В распределённой информационной базе каждый узел нумерует документы независимо. Центральный и периферийный узлы, создавая документы с автонумерацией, легко присвоят один и тот же номер — а после обмена в базе окажутся два документа с одинаковым номером.
Решение одно: у каждого узла должен быть свой префикс. Тогда номера физически не пересекаются.
- В типовых конфигурациях на БСП для этого есть готовый механизм — префикс информационной базы (обычно 1–2 символа), он задаётся в настройках синхронизации данных без программирования. Каждому узлу — свой префикс.
- В собственной конфигурации префикс узла подставляют в том же обработчике
ПриУстановкеНовогоНомера: храните код узла в константе и добавляйте его кПрефикс.
При проектировании РИБ заложите префикс сразу, ещё до первого обмена. Вводить его, когда дубли уже образовались, придётся вместе с ручным исправлением задвоенных номеров — это дольше и больнее.
Логика простая: префикс делает диапазоны номеров узлов непересекающимися. Центр выдаёт Ц-000001, периферия — П-000001, и после обмена оба документа спокойно уживаются в одной базе. Сам счётчик при этом у каждого узла идёт своим чередом, а уникальность обеспечивает именно разный префикс, а не согласование номеров между узлами.
Длину номера в РИБ рассчитывайте так, чтобы хватило и на префикс узла, и на сам счётчик. Иначе на периферии номера начнут упираться в ограничение длины раньше, чем в центре.
Частые ошибки при настройке нумерации
Большинство проблем с нумераторами сводится к нескольким типовым ситуациям. Разберите по симптому:
Частые вопросы
Можно ли изменить длину номера, когда документы уже созданы?
Чем нумератор отличается от нумерации в свойствах самого документа?
Нужно ли программирование, чтобы добавить префикс?
ПриУстановкеНовогоНомера.