Справочники и Данные · 15 мин
Значение поля не уникально в 1С: как исправить ошибку
Разбираем ошибку «значение поля не уникально» в 1С: почему возникает дубль кода или номера, как найти повтор и исправить его без потери данных в справочниках и документах.
Ошибка «Значение поля "Код" не уникально» (или «Номер не уникален») появляется, когда программа пытается записать элемент справочника или документ со значением, которое уже есть в базе. 1С контролирует уникальность кодов справочников и номеров документов автоматически, но после обменов данными, загрузок из файлов, ручного редактирования кодов или сбоев нумерации контроль даёт сбой — и запись блокируется.
Чаще всего проблема возникает в справочниках «Номенклатура», «Контрагенты», «Сотрудники», а также в документах после переноса данных между базами. Пользователь нажимает «Записать» или «Провести», получает сообщение о неуникальности и не может сохранить объект. При этом сам дубль в списке обычно не виден, потому что конфликтующий элемент может быть помечен на удаление, находиться в другой папке или иметь отличающееся наименование.
Исправить ошибку можно штатными средствами: найти повтор, освободить код или номер, либо перенумеровать объекты. Ниже разобраны причины, пошаговые способы устранения и меры профилактики. Все действия выполняются типовыми инструментами 1С:Предприятие 8.3 и не требуют программирования, за исключением отдельных сложных случаев.
Почему 1С сообщает, что значение поля не уникально
Уникальность кода и номера — встроенное свойство платформы. Для справочников в конфигурации задана длина кода и признак контроля уникальности; для документов аналогично контролируется номер в пределах периода (обычно года). Когда при записи значение совпадает с уже существующим, платформа отклоняет транзакцию и выдаёт сообщение «Значение поля "Код" не уникально» или «Значение поля "Номер" не уникально».
Типовые причины появления дублей:
- обмен данными между базами (РИБ, обмен с сайтом, синхронизация с другой конфигурацией), когда в обеих базах созданы элементы с одинаковыми кодами;
- загрузка данных из Excel, DBF или внешних обработок без проверки существующих кодов;
- ручное изменение кода элемента на уже занятый;
- сбой автонумерации после восстановления базы, переноса или обновления конфигурации;
- элемент с нужным кодом помечен на удаление — в списке его не видно при стандартном отборе, но код остаётся занятым;
- смена префикса базы или настроек нумерации, после чего новые объекты получают номера, пересекающиеся со старыми.
Важно понимать: это не сбой программы, а срабатывание защиты целостности данных. Игнорировать ошибку нельзя — нужно либо освободить конфликтующее значение, либо присвоить объекту другое.
Как быстро найти дубль кода или номера
Первый шаг — определить, какой именно объект держит конфликтующее значение. Откройте список справочника или документов и воспользуйтесь поиском: в большинстве конфигураций это команда «Найти» (Ctrl+F) с поиском по коду/номеру, либо поле поиска в шапке списка. Введите значение из сообщения об ошибке.
Если поиск ничего не дал, проверьте помеченные на удаление объекты. В форме списка через меню «Ещё» включите отображение помеченных (в ряде конфигураций — «Показать помеченные на удаление» либо снимите отбор по пометке). Часто именно помеченный элемент занимает код: визуально список «чистый», но уникальность контролируется по всем записям таблицы, включая помеченные.
Для документов учитывайте период нумерации: номер уникален в пределах периода (как правило, года) и префикса. Документ с таким же номером может находиться в другом году — тогда конфликта нет, а вот дубль внутри текущего периода нужно искать по журналу с отбором по номеру.
Поиск по коду с включённым показом помеченных на удаление
Сколько элементов загружено, есть ли дубли по нескольким кодам
Максимальный номер документа за текущий год и префикс нумерации
Проверить запись того же объекта под другим пользователем
Способ 1. Освободить код помеченного или ненужного элемента
Если дубль — это помеченный на удаление объект, который реально не нужен, самый чистый путь — удалить его физически. В типовых конфигурациях для этого служит обработка «Удаление помеченных объектов» (раздел «Администрирование» — «Обслуживание» в конфигурациях на БСП, либо «Операции» — «Удаление помеченных объектов»). После физического удаления код освобождается, и новый элемент записывается без ошибки.
Если помеченный объект удалить нельзя (он участвует в документах, поэтому контроль ссылочной целостности не даёт его убрать), поступите иначе: откройте карточку этого элемента и вручную измените его код на заведомо свободный, например добавив символ или увеличив значение. Затем запишите. После этого нужный код станет свободен для нового объекта.
Учтите ограничение: если длина кода в конфигурации фиксирована (например, 9 символов), вписать «длинный» код не получится — подберите свободное значение в пределах заданной длины. Также помните, что изменение кода элемента, на который есть ссылки из других систем по коду, может нарушить внешние обмены.
Способ 2. Изменить код или номер нового объекта
Самый безопасный вариант, когда дубль — действующий, нужный элемент: не трогать существующие данные, а присвоить новому объекту другой код. Откройте карточку записываемого элемента, очистите поле «Код» и нажмите «Записать» — при включённой автонумерации платформа сама присвоит следующее свободное значение. Либо введите код вручную, заведомо выходящий за занятый диапазон.
Для документов аналогично: очистите поле «Номер» и перезапишите документ — 1С присвоит следующий номер по текущей нумерации. Если автонумерация выдаёт уже занятый номер (счётчик сбит), введите вручную номер больше максимального существующего за период — после записи счётчик «подтянется» к новому значению, и последующие документы будут нумероваться корректно.
- 1Скопируйте значение кода или номера из текста ошибки
- 2Найдите объект с этим значением через поиск, включив показ помеченных на удаление
- 3Определите, какой из двух объектов лишний: новый или найденный
- 4Измените код лишнего объекта на свободный либо удалите помеченный объект через штатное удаление помеченных
- 5Повторно запишите исходный объект и убедитесь, что ошибка исчезла
Способ 3. Массовое исправление при большом числе дублей
Когда дублей десятки или сотни (типично после загрузок и обменов), ручное исправление нерационально. Используйте типовые средства: в конфигурациях на Библиотеке стандартных подсистем доступна обработка «Групповое изменение реквизитов» («Администрирование» — «Обслуживание» — «Корректировка данных»), а также «Поиск и удаление дублей» («Администрирование» — «Обслуживание»), которая находит одинаковые элементы по наименованию и реквизитам и объединяет их с автоматической заменой ссылок.
Обработка «Поиск и удаление дублей» особенно полезна после обменов: она не просто меняет коды, а схлопывает дубли в один элемент, перенося все ссылки из документов. Это сохраняет отчётность и историю. Перед объединением внимательно проверьте список пар — автоматика может предложить объединить разные по смыслу элементы со схожими наименованиями.
Для восстановления нумерации документов после переноса данных применяют обработки перенумерации (в том числе «Универсальный подбор и обработка объектов» с ИТС или аналогичные). Они последовательно переприсваивают номера в хронологическом порядке. Запускайте такие обработки только в монопольном режиме и после резервного копирования: перенумерация меняет данные, на которые могут ссылаться печатные формы и внешние отчёты.
Сравнение способов исправления
Подходит для 1–3 конфликтов; полностью контролируется, но не масштабируется
Освобождает коды ненужных элементов; не работает, если на объект есть ссылки
Лучший вариант после обменов: объединяет элементы с заменой ссылок; требует проверки пар вручную
Для системного сбоя нумерации; рискованно без копии, меняет номера уже использованных документов
Особые случаи: обмены, префиксы и сбитая нумерация
Дубли после обмена РИБ или синхронизации
В распределённых базах и при синхронизации уникальность кодов обеспечивается префиксами. Если у двух узлов одинаковый префикс или префикс пустой, элементы, созданные параллельно, получат одинаковые коды — и при обмене начнутся конфликты. Проверьте настройки: «Администрирование» — «Синхронизация данных» — префикс информационной базы. У каждой базы префикс должен быть свой. После назначения префиксов новые объекты перестанут конфликтовать, а существующие дубли обработайте через «Поиск и удаление дублей».
Нумерация документов сбилась после переноса
Признак: новый документ получает номер, который уже есть в журнале текущего года. Причина — счётчик нумерации ориентируется на максимальный номер, и если перенос выполнялся с обрезанием или в другом порядке, счётчик «отстал». Лечение: найдите максимальный номер за период, создайте новый документ, вручную впишите следующий номер и запишите. Дальнейшая автонумерация пойдёт корректно. Если номера содержат буквенные префиксы, учитывайте, что сравнение идёт в лексикографическом порядке — «9» может оказаться «больше» «10».
Уникальность по другому полю
Сообщение может касаться не только кода: в некоторых конфигурациях уникальность настроена для индексов регистров сведений, штрихкодов, ИНН в отдельных проверках. Внимательно читайте текст ошибки — там указано имя поля. Для регистров сведений конфликт решается поиском записи по измерениям регистра и её корректировкой, а не сменой кода.
Профилактика: как не допустить повторения ошибки
Большинство случаев неуникальности — следствие процессных ошибок, а не сбоев платформы. Чтобы проблема не возвращалась, настройте несколько простых правил. Во-первых, назначьте разным базам и внешним источникам разные префиксы кодов и номеров — это исключает пересечения при обменах. Во-вторых, при загрузках из файлов используйте обработки, ищущие существующие элементы по ключевым полям (наименование, ИНН, артикул), а не создающие новые вслепую.
В-третьих, регулярно выполняйте регламентное удаление помеченных объектов: база, где копятся тысячи помеченных элементов, не только занимает коды, но и замедляет работу. В-четвёртых, ограничьте права на ручное изменение кодов и номеров — в типовых конфигурациях это доступно через настройку прав пользователей, и ручное вмешательство в нумерацию стоит оставить только администраторам.
Наконец, после любых переносов данных и обновлений проверяйте нумерацию: создайте тестовый документ и элемент справочника, убедитесь, что им присваиваются корректные, незанятые значения. Это занимает минуту и избавляет от разбора дублей позже.
Как проверить, что проблема решена
После исправления выполните контрольную проверку. Запишите объект, вызывавший ошибку, — сообщение о неуникальности не должно появиться. Создайте ещё один новый элемент того же справочника или документ того же вида: ему должен присвоиться следующий свободный код или номер без ручного вмешательства.
Если исправляли дубли после обмена, проведите тестовый сеанс синхронизации и убедитесь, что в протоколе нет ошибок коллизий и предупреждений о неуникальности. При перенумерации документов сверьте несколько номеров с первичными бумажными документами или внешними отчётами, чтобы убедиться, что связь с реальными документами не потеряна.
Как проверить результат
Объект записывается и проводится без сообщений
Ошибка неуникальности появляется снова — дубль не найден или есть ещё один
Присваивается следующий свободный код/номер
Присваивается занятое значение — счётчик нумерации не восстановлен
Протокол без ошибок коллизий и неуникальности
Новые конфликты — префиксы баз совпадают или дубли остались
Документы открываются, ссылаются на оставшийся элемент
Битые ссылки вида «Объект не найден» — объединение выполнено некорректно
Если после всех действий ошибка сохраняется, а дубль не находится штатными средствами, вероятны повреждения на уровне таблиц базы. В этом случае выполните тестирование и исправление информационной базы через конфигуратор («Администрирование» — «Тестирование и исправление») с предварительной копией, отметив проверку логической и ссылочной целостности. Если и это не помогает — привлекайте специалиста по 1С: дальнейшие самостоятельные действия с таблицами СУБД требуют опыта и рискованны.
Что важно запомнить
Ошибка «значение поля не уникально» — это срабатывание контроля уникальности кода или номера. Найдите дубль с учётом помеченных на удаление объектов, освободите значение или смените код нового объекта. Массовые дубли после обменов устраняйте обработкой «Поиск и удаление дублей», сбитую нумерацию — ручной установкой следующего номера. Перед массовыми операциями всегда делайте резервную копию, а для профилактики настройте разные префиксы баз и регламентное удаление помеченных объектов.
Частые вопросы
Почему код не занят ни одним элементом в списке, а 1С всё равно выдаёт ошибку?
Почти наверняка значение занято объектом, помеченным на удаление: контроль уникальности распространяется и на него. Включите отображение помеченных элементов в форме списка и повторите поиск. Реже причина в том, что поиск выполнялся с отбором (по папке, владельцу, отбору списка), из-за которого нужный элемент скрыт — снимите все отборы и ищите снова.
Можно ли вообще отключить контроль уникальности кода?
Технически разработчик может изменить настройки в конфигураторе, но для типовых конфигураций это крайне нежелательно: дубли кодов ломают обмены, отчёты и поиск. Правильный путь — устранить дубли и настроить префиксы, а не отключать защитный механизм. Кроме того, изменение конфигурации снимает её с полной поддержки и усложняет обновления.
Ошибка возникает при проведении документа, а не при записи справочника. Это то же самое?
Механизм тот же, но поле другое — конфликтуют номера документов в пределах периода нумерации. Очистите номер и перезапишите документ, либо вручную задайте номер больше максимального за текущий год. Если ошибка повторяется у каждого нового документа, причина в сбитом счётчике нумерации, и ручная установка следующего номера её устраняет.
Чем опасна перенумерация документов обработкой?
Меняются номера уже существующих документов, поэтому расходятся печатные формы, бумажные оригиналы, книги покупок и продаж и сданная отчётность, если период закрыт. Перенумерацию безопасно делать только внутри открытого текущего периода, в монопольном режиме и после резервной копии. Документы прошлых закрытых периодов трогать не следует.
После объединения дублей часть документов показывает «Объект не найден». Что делать?
Такое бывает, если объединение прерывалось или выполнялось нештатной обработкой без замены ссылок. Восстановите базу из резервной копии, сделанной перед операцией, и повторите объединение типовой обработкой «Поиск и удаление дублей» — она корректно заменяет все ссылки. Если копии нет, битые ссылки придётся восстанавливать вручную по журналам или с помощью специалиста.
Ошибка появляется только при обмене с другой базой, в самой базе всё записывается нормально. В чём причина?
Это классический признак совпадающих префиксов у узлов обмена: обе базы создают объекты с одинаковыми кодами, и при загрузке возникает конфликт. Задайте каждой базе уникальный префикс в настройках синхронизации, затем разберите уже накопленные дубли через «Поиск и удаление дублей». После этого обмен должен проходить без ошибок неуникальности.