Дубль номера документа в 1С 8.3: откуда берётся и как развести документы

· 10 мин

Содержание

Ошибка «не уникальный номер» в 1С означает, что в базе уже есть документ того же вида с таким же номером в том же периоде нумерации. Быстрое решение: откройте документ, очистите поле «Номер» и запишите его — программа сама присвоит следующий свободный номер. Если номер важен (он уже на бумаге у контрагента), меняйте номер у второго, «лишнего» документа.

Сообщение выглядит по-разному: Значение поля "Номер" не уникально, «документ с таким номером уже существует» или ошибка СУБД про нарушение уникального индекса. Причина почти всегда одна из пяти: ручная правка номера, смена даты, совпадающие префиксы, загрузка из другой базы или повреждение индексов. Какая из них ваша, видно по тому, когда и у какого документа появилась ошибка.

Как 1С нумерует документы и где включается контроль

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

  • 🔢 Тип и длина номера — строка или число, например 11 символов.
  • 📅 Периодичность — непериодический, в пределах года, квартала, месяца или дня. В типовых БП 3.0 и УТ 11 для большинства документов это год.
  • 🔒 Контроль уникальности — флаг, при котором платформа не даёт записать второй документ с тем же номером в одном периоде.
  • ⚙️ Автонумерация — если номер пустой, при записи платформа выдаёт следующий.
  • 🔗 Нумератор — общий счётчик для нескольких видов документов. Тогда номер должен быть уникален сразу по всем этим видам.

Отсюда важное следствие. Периодичность «в пределах года» разрешает два документа № 0000-000001 — один от 15.03 прошлого года, другой от 10.01 текущего. Это не ошибка, а нормальная картина после смены года.

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

Часть номераГде задаётсяЗачем нужна
Префикс организацииКарточка организации, поле «Префикс»Разводит номера фирм в одной базе
Префикс базыАдминистрирование → Синхронизация данныхРазводит номера узлов обмена и РИБ
Порядковая частьАвтоматическиСчётчик внутри периода

Откуда берётся конфликт номеров

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

  • ✍️ Ручной ввод. Пользователь вписал номер, который уже занят. Часто так «подгоняют» номер под бумажный счёт поставщика.
  • 📆 Смена даты на другой период. Документ № 45 от декабря перенесли на январь, а в январе свой № 45 уже есть. Платформа проверяет уникальность в новом периоде и отказывает.
  • 📋 Копирование. Скопировали документ и вручную поставили номер оригинала.
  • 🏢 Пустые или одинаковые префиксы. Две организации без префикса делят одну последовательность. Пока номера выдаёт автоматика, всё спокойно. Стоит одному бухгалтеру вбить номер руками — второй получает ошибку.
  • 🔄 Загрузка из другой базы. Документы пришли через обмен, выгрузку-загрузку XML или внешнюю обработку . В режиме загрузки данных часть проверок не выполняется, и дубль попадает в базу. Ошибка всплывает позже — когда кто-то откроет и перезапишет такой документ.
  • 🧩 Повреждение индексов. Сбой питания, аварийное завершение сервера, проблемы с диском. Тогда ругается уже СУБД, и сообщение содержит слова «unique index», «duplicate key» или «нарушение уникальности».

Две последние причины коварны: пользователь ничего не нумеровал руками, а ошибка появилась. Если дубль всплыл у документа, который никто не трогал, ищите обмен или сбой.

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

Поиск дублей номеров в базе

Если дубль один, его видно в списке. Откройте журнал нужного вида документов, отсортируйте по колонке «Номер» щелчком по заголовку и посмотрите на соседние строки. Сузить поиск помогает отбор по периоду и по организации.

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

ВЫБРАТЬ
    Док.Номер КАК Номер,
    НАЧАЛОПЕРИОДА(Док.Дата, ГОД) КАК Год,
    КОЛИЧЕСТВО(Док.Ссылка) КАК Штук
ИЗ
    Документ.РеализацияТоваровУслуг КАК Док
СГРУППИРОВАТЬ ПО
    Док.Номер,
    НАЧАЛОПЕРИОДА(Док.Дата, ГОД)
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Док.Ссылка) > 1

Для другого вида документа замените имя после Документ.. Если у документа периодичность «в пределах квартала» или «месяца», замените ГОД на КВАРТАЛ или МЕСЯЦ. Для непериодической нумерации поле года из запроса уберите.

Чтобы увидеть сами документы, а не только номер, выполните второй запрос:

ВЫБРАТЬ
    Док.Ссылка,
    Док.Дата,
    Док.Номер,
    Док.Проведен
ИЗ
    Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
    Док.Номер = &Номер
УПОРЯДОЧИТЬ ПО
    Док.Дата

Параметр &Номер подставьте из первого запроса. В результате будут обе ссылки — их можно открыть двойным щелчком.

Если документы разных видов используют общий нумератор, дубль может быть между ними: например, приходный документ и возврат с одинаковым номером. Запрос по одному виду такой пары не покажет — объедините виды через ОБЪЕДИНИТЬ ВСЕ.

Способы исправить неуникальный номер: от формы до обработки

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

  • 📤 Счёт-фактура выставлен и отражён в книге продаж или отправлен по ЭДО — его номер не трогаем.
  • 🖨️ Акт, накладная или счёт уже подписаны контрагентом — номер не трогаем.
  • 📝 Документ создан недавно, никуда не отправлялся — его и перенумеровываем.

Смена номера у уже переданной первички или счёта-фактуры создаёт расхождение с документами контрагента. Если без этого не обойтись, согласуйте изменение с ним и с главным бухгалтером.

Способ 1. Очистить номер и записать

Самый безопасный путь для одного-двух документов.

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

Документ получит номер в конце последовательности, а не «в дырку». Для внутренних документов это нормально.

Способ 2. Вписать конкретный номер вручную

Нужен, когда номер должен совпасть с бумажным оригиналом или встать на определённое место.

  1. Проверьте по списку, что выбранный номер в этом году свободен.
  2. Впишите его полностью, вместе с префиксами и ведущими нулями: 0000-000123, а не 123.
  3. Запишите документ.

Частая промашка — вписать короткий номер без префикса. Он формально уникален, но выбивается из нумерации, и потом его трудно найти поиском.

Способ 3. Массовая перенумерация обработкой

После неудачного обмена дублей бывают сотни. Руками это долго, поэтому пишут внешнюю обработку. Ядро такое:

ДокОбъект = Ссылка.ПолучитьОбъект();
ДокОбъект.УстановитьНовыйНомер();
ДокОбъект.ОбменДанными.Загрузка = Истина;
ДокОбъект.Записать();

Метод УстановитьНовыйНомер() выдаёт следующий номер по правилам документа. Режим ОбменДанными.Загрузка записывает объект без обработчиков и без перепроведения: движения остаются как были, ведь регистры ссылаются на документ, а не на его номер.

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

СпособКогда подходитРиски
Очистить номер1–5 внутренних документовНомер уйдёт в конец последовательности
Ручной номерНужно совпадение с бумагойМожно снова попасть в занятый номер
ОбработкаДесятки и сотни дублей после обменаОшибка в коде затронет много документов

Если ругается СУБД, а не программа

Сообщение с duplicate key, unique index или «нарушение уникальности индекса» говорит о повреждении данных на уровне таблиц. Перенумерация тут не поможет.

  1. Сделайте резервную копию (выгрузку .dt или копию каталога файловой базы).
  2. Попросите всех пользователей выйти: проверка требует монопольного доступа, сеансы будут закрыты.
  3. В конфигураторе выберите Администрирование → Тестирование и исправление.
  4. Отметьте проверку логической целостности и реиндексацию таблиц, режим — тестирование и исправление.
  5. После проверки найдите дубли запросом и разведите их одним из способов выше.

Запускайте проверку вечером или в выходной: на большой базе она идёт часами.

Дубли номеров в распределённой базе (РИБ) и обменах

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

Проверьте префиксы во всех узлах:

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

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

Перед сменой префикса завершите текущий цикл обмена во всех узлах. Иначе в пути окажутся документы со старой нумерацией, и картина запутается.

С обменами между разными конфигурациями — например, УТ 11 и БП 3.0 — похожая история. Если в приёмник документы приходят со своими номерами, а там параллельно вводят такие же документы вручную, номера столкнутся. Решения два: давать базе-приёмнику отдельный префикс организации или запретить ручной ввод документов того вида, которые приходят обменом.

Как не допустить повторения номеров

Профилактика сводится к тому, чтобы номер выдавала программа, а не человек.

  • 🏷️ Префиксы у каждой организации. Даже если фирма в базе одна — вторая может появиться. Префикс задают до начала работы: менять его посреди года неудобно.
  • 🌐 Уникальный префикс у каждого узла обмена. Проверяйте при создании нового узла РИБ и при подключении новой синхронизации.
  • 🚫 Ограничение ручной правки номера. Если в конфигурации есть настройка прав на изменение номера, оставьте её только у ответственных. Номер входящего документа контрагента храните в отдельном поле «Номер входящего документа» — оно есть в большинстве поступлений.
  • 📅 Осторожность со сменой даты. Перенос документа в другой год — частый источник конфликта. Перед переносом очистите номер, чтобы программа выдала номер нового периода.
  • 💾 Стабильная работа сервера. ИБП, контроль свободного места на диске, регулярное резервное копирование — защита от повреждения индексов.
  • 🔍 Проверка после крупных загрузок. После переноса остатков, загрузки из старой базы или первого обмена прогоните запрос на дубли.
Проверка нумерации перед началом года
Выполнено: 0 / 5

Типичные промахи при исправлении

  • ❌ Удалить один из документов-дублей. Если оба реальные, вы теряете операцию. Помеченный на удаление документ продолжает занимать номер, пока не удалён окончательно.
  • ❌ Поменять номер выставленного счёта-фактуры. Номер в книге продаж разойдётся с экземпляром покупателя.
  • ❌ Вписать номер без префикса. Ошибка исчезает, но нумерация ломается, а поиск по номеру потом не находит документ.
  • ❌ Сменить префикс базы и забыть про старые дубли. Новый префикс не исправляет прошлое.
  • ❌ Перенумеровать в подчинённом узле РИБ. Изменения могут вернуться из центра при следующем обмене.

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

Почему в 1С два документа с одним номером и при этом нет ошибки?
Скорее всего, они в разных периодах нумерации — например, в разных годах. Либо дубль попал через обмен, и ошибка проявится при перезаписи одного из них.
Можно ли отключить контроль уникальности номера?
Флаг «Контроль уникальности» есть в свойствах документа в конфигураторе, но его изменение — доработка типовой конфигурации, которая усложнит обновления. Так не делают: дубли номеров собьют печатные формы, отчёты и обмены.
Помеченный на удаление документ занимает номер?
Да. Пока документ не удалён окончательно через удаление помеченных объектов, его номер считается занятым.
Почему после перенумерации появились пропуски в номерах?
Автонумерация не заполняет дыры: она выдаёт номер после последнего занятого. Пропуски в номерах внутренних документов законом не запрещены, но счета-фактуры лучше нумеровать без разрывов внутри года.
Сбрасывается ли нумерация с нового года?
Для документов с периодичностью «в пределах года» — да, с 1 января счёт начинается заново. Повтор номеров прошлого года в этом случае нормален.