Как настроить и исправить нумерацию в 1С 8.3

· 9 мин

Содержание

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

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

Чем номер документа отличается от кода справочника

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

Нумерация бывает двух видов:

  • 🔄 автоматическая — платформа подставляет следующее значение при создании нового объекта;
  • ✍️ ручная — пользователь вводит номер сам (встречается редко, обычно для справочников с «говорящими» кодами).

Ключевая разница между документом и справочником — в периодичности. Номер документа почти всегда сбрасывается в начале периода (года или месяца), код справочника растёт сквозным счётчиком без привязки к дате. Поэтому у документов есть настройка периодичности, а у справочников — настройка серий кодов.

Номер хранится строкой, даже если выглядит как число. Из-за этого 000012 и 12 — разные значения, а сортировка идёт посимвольно. Это важно помнить при выгрузках и сравнениях.

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

Откройте конфигуратор, найдите нужный документ в дереве метаданных, откройте его свойства (палитра свойств, группа Нумерация). Там несколько параметров.

СвойствоЧто задаётНа что влияет
Тип номераЧисло или СтрокаДля префиксов нужна Строка
Длина номераЧисло символовВместе с префиксом должна помещаться целиком
ПериодичностьГод / квартал / месяц / день / непериодическийКогда счётчик обнуляется
Проверка уникальностиКонтроль дублейПлатформа не даст два одинаковых номера в периоде
АвтонумерацияВыдавать номер при созданииСнятый флаг = номер вводят вручную
НумераторОбщий объект нумерацииСквозной счётчик на несколько документов

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

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

Важное про длину. Если префикс и порядковый номер вместе не помещаются в заданную длину, платформа обрежет значение или выдаст ошибку. Типовой расчёт: 2 символа на префикс информационной базы + 2 на префикс организации + разделитель + сам номер. Под тысячи документов в год закладывайте не меньше 6–7 знаков под порядковую часть.

Как пользователю поменять номер документа вручную

Это самый частый практический вопрос, и он решается без конфигуратора.

  1. Откройте документ.
  2. Встаньте в поле Номер (оно в шапке, рядом с датой).
  3. Если поле серое и не редактируется — в командной панели формы есть команда, разрешающая правку номера (в типовых она называется по смыслу «Разрешить редактирование реквизитов» или «Изменить номер»).
  4. Введите нужное значение и запишите документ.

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

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

Нумерация справочников: длина кода, серии и уникальность

У справочника параметры кода задаются там же, в палитре свойств:

  • Длина кода — сколько символов отводится под код;
  • Тип кода — Число или Строка;
  • Автонумерация — выдавать ли код автоматически;
  • Контроль уникальности — запрещать ли дубли кодов;
  • Серия кодов — в каких границах код должен быть уникальным и как нарастать.

Серия кодов — главная настройка для иерархических справочников и справочников с владельцем:

Значение серииГде уникален кодТипичный случай
Во всём справочникеОдин сквозной счётчикПростой плоский справочник
В пределах подчиненияВнутри каждой группы своя серияИерархия, где коды повторяются в разных папках
В пределах подчинения владельцуВнутри каждого владельцаПодчинённый справочник (например, договоры по контрагенту)

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

Отдельная тонкость — тип кода. Если код числовой, 0012 и 12 платформа считает одним значением, и ведущие нули не сохранятся. Нужны коды строго фиксированной длины с нулями впереди (частый случай для выгрузок во внешние системы) — ставьте тип кода Строка.

Префиксы: организация, информационная база, обмен и РИБ

Префикс — это буквы или цифры в начале номера, по которым видно, чей это документ. В типовых конфигурациях на библиотеке стандартных подсистем (БСП) префикс складывается из двух частей.

🏢 Префикс организации. В карточке организации есть поле «Префикс» (обычно 2 символа). Все документы этой организации получают его в начале номера. Это разводит нумерацию, когда в одной базе несколько юрлиц.

🗄️ Префикс информационной базы. Задаётся в настройках синхронизации данных — поле «Префикс этой информационной базы». Он нужен, когда баз несколько и они обмениваются данными: по префиксу видно, в какой базе документ создан.

Итоговый номер выглядит, например, так: ЦБ-00-000012, где ЦБ — организация, 00 — база, 000012 — порядковый номер.

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

Почему в обмене и РИБ важны разные префиксы

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

Решение одно: каждому узлу РИБ и каждой базе в обмене задайте свой уникальный префикс информационной базы. Тогда 00-000001 из центральной базы и 05-000001 из филиала — разные номера, конфликта нет.

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

Проверка перед запуском обмена или РИБ
Выполнено: 0 / 5

Программная установка номера и кода

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

Для документа:

НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.УстановитьНовыйНомер();   // с учётом периодичности

Если нужно задать префикс вручную, он передаётся параметром: УстановитьНовыйНомер("ЗАК-").

Для элемента справочника аналогично:

НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.УстановитьНовыйКод();

Чтобы вмешаться в саму логику выдачи, у документа есть событие ПриУстановкеНовогоНомера, у справочника — ПриУстановкеНовогоКода. В них можно подставить свой префикс или полностью отключить стандартную выдачу:

Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
    // добавить свой префикс к штатному номеру
    Префикс = "ЗАК-";
    // СтандартнаяОбработка = Ложь; // так платформа номер НЕ выдаст — считаете сами
КонецПроцедуры

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

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

Номер в печатных формах и отчётах

В печать и отчёты номер почти никогда не выводят «как в базе». ЦБ-00-000012 в счёте выглядит некрасиво, клиенту нужен 12 или СФ-12.

В типовых на БСП для этого есть функция, которая убирает ведущие нули и по параметрам отсекает префиксы:

НомерДляПечати = ОбщегоНазначения.НомерНаПечать(
    Ссылка.Номер,
    Истина,   // убрать префикс информационной базы
    Ложь);    // префикс организации оставить

Если работаете не в типовой или функции нет под рукой — смотрите её описание в составе библиотеки, а простое отсечение ведущих нулей делается через Число(Номер) с обратным преобразованием или штатным форматированием.

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

Частые ошибки нумерации и как их разобрать

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

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

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

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

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