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

Администрирование · 12 мин

Что значит «код не уникальный» в 1С и как исправить ошибку

Что значит ошибка «Код не уникальный» в 1С, почему она возникает при обмене и ручном вводе, как найти дубликаты и безопасно исправить нумерацию справочников.

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

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

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

Что означает ошибка и как работает контроль уникальности

Каждый элемент справочника и каждый документ в 1С имеет код (для документов — номер). В свойствах объекта конфигурации задан параметр «Контроль уникальности». Если он включён, платформа при записи проверяет, нет ли в базе другого элемента с тем же кодом, и при совпадении отказывает в записи с сообщением «Код не уникальный» или «Значение поля "Код" не уникально».

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

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

Основные причины появления ошибки

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

Вторая причина — сбой автонумерации. Если кто-то вручную ввёл код «вперёд» (например, записал элемент с кодом 000000150, когда счётчик был на 40), автонумерация продолжит с меньшего значения и рано или поздно упирается в занятые коды. Похожая ситуация возникает после восстановления базы из старой копии, когда часть элементов была создана позже даты копии.

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

Четвёртая причина — доработки и внешние обработки. Загрузка данных из Excel, самописные обработки переноса, программное создание элементов без проверки занятости кода — всё это способно массово генерировать конфликты.

Ошибка у одного пользователя при ручном вводеЛокальный конфликт

Проверить, существует ли элемент с таким кодом, в том числе помеченный на удаление

Ошибка при автонумерации новых элементовСбит счётчик нумерации

Сравнить максимальный код в справочнике с кодом, который предлагает программа

Ошибка после обмена или синхронизацииКонфликт кодов между базами

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

Массовые ошибки при загрузке из файлаДубли во внешних данных

Проверить файл на повторяющиеся коды и логику обработки загрузки

Как найти элемент, который занимает код

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

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

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

Как исправить ошибку вручную

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

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

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

Порядок действий при единичном конфликте
  1. 1
    Запомните код из сообщения об ошибке
  2. 2
    Найдите элемент с этим кодом через отбор в списке справочника
  3. 3
    Проверьте помеченные на удаление элементы — код может быть занят ими
  4. 4
    Присвойте новому элементу свободный код или удалите помеченный дубль через «Удаление помеченных объектов»
  5. 5
    Создайте тестовый элемент и убедитесь, что автонумерация работает без ошибок

Перенумерация и исправление сбитой нумерации

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

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

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

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

При обмене между базами конфликт кодов — типовая проблема, и решается она не перенумерацией, а правильной настройкой. Каждому узлу обмена должен быть назначен уникальный префикс (например, «ЦБ» для центральной базы и «Ф1» для филиала). Тогда новые элементы в каждой базе получают коды с разными префиксами и физически не могут совпасть.

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

Если дубли уже загружены и конфликт зафиксирован в истории обмена, потребуется разобрать конкретные пары объектов: либо переназначить коды в одном из узлов, либо настроить правила конвертации, чтобы сопоставление шло не по коду, а по другому ключу (например, по GUID или ИНН для контрагентов). Это работа для специалиста по обменам, выполнять её на рабочей базе без копии нельзя.

Маршрут решения

Как выбрать действие

Ошибка у одного пользователя при создании элементаНайдите занятый код через отбор и присвойте новому элементу свободный код
Автонумерация постоянно предлагает занятые кодыВыполните перенумерацию или поднимите счётчик, создав элемент с максимальным кодом
Ошибки появляются после синхронизации базПроверьте и задайте уникальные префиксы узлов обмена
Конфликт вызван помеченным на удаление элементомВыполните удаление помеченных объектов или снимите пометку и освободите код
Дубли массово создаёт внешняя обработка загрузкиОстановите загрузку и исправьте логику присвоения кодов в обработке

Типичные ошибки при устранении и ограничения

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

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

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

Типичные ошибки
01
Отключение контроля уникальности вместо устранения причины — приводит к реальным дублям элементов
02
Удаление помеченного элемента без проверки ссылок — появляются битые ссылки в документах
03
Перенумерация документов закрытого периода — расхождение с сданной отчётностью
04
Обмен без префиксов узлов — конфликты кодов возвращаются после каждой синхронизации
05
Исправление на рабочей базе без резервной копии — невозможность отката при ошибке

Как проверить, что проблема решена

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

Дополнительно полезно запустить проверку логической целостности данных (в типовых конфигурациях — штатные сервисные обработки, на уровне СУБД — тестирование и исправление на копии). Это выявит скрытые дубли, которые ещё не проявились в сообщениях об ошибках.

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

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

Создание нового элемента
Норма

Код присваивается автоматически, запись проходит без сообщений

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

Снова появляется ошибка «Код не уникальный»

Отбор по ранее конфликтному коду
Норма

Найден ровно один элемент

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

Найдено два и более элементов с одинаковым кодом

Протокол обмена после синхронизации
Норма

Нет ошибок уникальности и незагруженных объектов

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

Есть отказы в записи из-за дублей кодов

Автонумерация
Норма

Новые коды продолжают последовательность от максимального

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

Программа предлагает коды из уже занятого диапазона

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

Почему код занят, если элемента с таким кодом не видно в списке?

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

Можно ли просто отключить контроль уникальности, чтобы ошибка исчезла?

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

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

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

Можно ли перенумеровать документы, чтобы устранить дубли номеров?

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

Почему автонумерация предлагает уже занятый код?

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

Опасно ли исправлять коды самостоятельно?

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

Итог

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

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