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

Справочники и Данные · 11 мин

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

Почему в 1С возникает ошибка неуникального кода справочника и как её исправить: проверка дублей, настройка контроля уникальности, перенумерация и профилактика.

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

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

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

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

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

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

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

Ошибка при создании нового элементаСбой автонумерации

Счётчик отстал от фактических кодов — нужно обновить нумерацию

Ошибка после обмена или загрузкиПришёл дубль извне

Ищите два элемента с одинаковым кодом и разведите их

Ошибка при ручной правке кодаКод занят другим элементом

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

Ошибка повторяется регулярноСистемная причина

Проверьте настройки обмена и контроль уникальности в конфигураторе

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

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

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

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

Способ 1: изменить код одного из элементов

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

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

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

Способ 2: обновить нумерацию при сбое счётчика

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

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

Порядок действий при сбое автонумерации
  1. 1
    Сделайте резервную копию базы
  2. 2
    Отсортируйте справочник по коду и найдите максимальное значение
  3. 3
    Откройте «Администрирование» → «Обслуживание» → «Обновить нумерацию объектов» (если команда есть в конфигурации)
  4. 4
    Если команды нет — создайте элемент с кодом больше максимального и запишите его
  5. 5
    Создайте тестовый элемент и проверьте, что код присваивается без ошибки

Настройка контроля уникальности в конфигураторе

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

Обратите внимание на связанные свойства: «Автонумерация» включает автоматическое присвоение кодов, «Длина кода» ограничивает ёмкость нумерации, «Вид кода» (число или строка) влияет на порядок сортировки. Если длина кода исчерпана (например, задано 5 знаков, а элементов уже больше 99999), ошибки неуникальности будут возникать постоянно — в этом случае в конфигураторе увеличивают длину кода.

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

Профилактика: как не допустить повторения ошибки

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

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

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

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

Проверка результата

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

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

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

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

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

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

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

Ошибка неуникальности появляется снова — счётчик не исправлен

Список справочника, сортировка по коду
Норма

Повторяющихся кодов нет

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

Остались элементы с одинаковым кодом

Обмен данными после исправления
Норма

Элементы сопоставляются, новых дублей нет

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

При каждом обмене создаются копии элементов

Документы, ссылавшиеся на дубль
Норма

Ссылки ведут на существующий элемент

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

В полях документов отображается «Объект не найден»

Итог

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

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

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

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

Технически — да, в конфигураторе снимается флажок «Контроль уникальности» у справочника. Но делать это не рекомендуется: дубли кодов останутся в базе и создадут проблемы в обменах, отчётах и поиске. Правильнее устранить сами дубли и причину их появления.

Почему ошибка появляется при каждом создании нового элемента?

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

Что будет, если удалить один из элементов с одинаковым кодом?

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

Как предотвратить дубли кодов при обмене между двумя базами 1С?

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

Поле «Код» недоступно для редактирования — как его изменить?

В ряде конфигураций изменение кода заблокировано программно. Варианты: воспользоваться обработкой «Групповое изменение реквизитов» из раздела «Администрирование», которая позволяет править коды в режиме разработчика, либо попросить администратора временно предоставить нужные права.

Ошибка возникла сразу после обновления конфигурации — это связано?

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