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

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

1С: значение поля «Код» не уникально — что делать

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

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

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

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

Почему возникает ошибка неуникальности кода

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

Типичные источники конфликта:

  • обмен данными между базами (РИБ, обмен с сайтом, выгрузка из другой конфигурации), когда в двух базах независимо создали элементы с одинаковыми кодами;
  • загрузка данных из Excel или внешних файлов обработками, которые присваивают коды без проверки;
  • ручное редактирование кода пользователем — например, попытка «подогнать» код под нужный номер;
  • сбой нумерации: максимальный код определяется неверно из-за нечисловых кодов, и следующий автоматически выданный код совпадает с существующим;
  • изменение длины кода в конфигураторе без перенумерации существующих элементов.
Ошибка у одного элементаЛокальный конфликт

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

Ошибка у многих элементов после загрузкиПроблема обмена или импорта

Проверьте настройки нумерации в источнике и приёмнике

Коды вида «000000012» и «12»Разный формат кодов

При сортировке и автонумерации такие коды конфликтуют

Ошибка только в подчинённом справочникеУникальность в пределах владельца

Ищите дубль среди элементов того же владельца

Как найти элемент с дублирующимся кодом

Прежде чем что-то менять, нужно понять, с кем конфликтует записываемый элемент. Самый простой способ — открыть список справочника и воспользоваться поиском: введите проблемный код в строку поиска (обычно Ctrl+F или поле поиска в командной панели списка) и укажите поиск по коду. Если найдётся один элемент — вы видите «владельца» кода; если два и более — дубли уже существуют в базе.

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

Для массовой диагностики (например, после большой загрузки) удобно вывести список в табличный документ или воспользоваться консолью запросов, сгруппировав элементы по коду и отобрав группы, где количество больше одного. Так вы за один проход получите полную картину всех дублей в справочнике.

Быстрое исправление: ручное изменение кода

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

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

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

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

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

Общий порядок безопасной перенумерации такой:

Порядок перенумерации
  1. 1
    Сделайте резервную копию базы и убедитесь, что она открывается
  2. 2
    Зафиксируйте текущий максимальный код и формат кодов (длина, префиксы)
  3. 3
    Запустите обработку перенумерации в тестовом режиме или на копии
  4. 4
    Проверьте, что элементы с ручными «особенными» кодами не потеряли смысловую привязку
  5. 5
    Выполните перенумерацию в рабочей базе вне часов активной работы пользователей
  6. 6
    Проверьте создание нового элемента: код должен присваиваться автоматически без ошибок

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

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

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

Практические меры профилактики:

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

Особые случаи: документы и подчинённые справочники

Для документов аналогичная ошибка звучит как «Значение поля "Номер" не уникально». Уникальность номера документа контролируется в пределах периода (обычно года) и, при необходимости, префикса организации. Решение похожее: найдите документ с таким номером через журнал документов, освободите номер или измените его, а при массовых конфликтах используйте обработку обновления нумерации.

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

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

Часто задаваемые вопросы

Можно ли вообще отключить контроль уникальности кода?

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

Изменится ли что-то в документах, если я поменяю код элемента справочника?

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

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

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

Что делать, если дубли появились после обмена между базами?

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

Нужно ли обращаться к программисту или можно справиться самостоятельно?

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

Итог

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

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