Ошибка «Обнаружено дублирование ключевых значений в колонках: Ссылка» в 1С 8.3

· Обновлено 12.07.2026 · ⏱ 8 мин · Редакция 1s-83.com

📋 Содержание

Открываете справочник или список, а вместо данных — окно с текстом Обнаружено дублирование ключевых значений в колонках: "Ссылка". В 1С 8.3 эта ошибка вылезает в динамических списках: платформа встретила две строки с одинаковым ключом и не может показать их в колонках формы.

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

Что означает ошибка «Обнаружено дублирование ключевых значений в колонках: Ссылка»

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

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

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

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

Почему появляется дублирование ключевых значений в 1С 8.3

Основные сценарии, от частого к редкому:

  • 🗂️ Дубли в регистре сведений. Список показывает данные из регистра, где измерением или ресурсом идёт ссылка. Две записи с одинаковой ссылкой — и список падает. Самый частый случай.
  • 🧹 Битый кэш клиента. Локальные файлы сеанса устарели после обновления или обрыва связи. Данных-дублей нет, но клиент их «видит».
  • 🔧 Нарушение целостности после сбоя. Незавершённое обновление, аварийное отключение во время записи, реструктуризация — в таблице остаются физические дубли строк.
  • 🧩 Ошибка в доработке. Кривой запрос в форме списка, добавленное поле без уникальности, самописная обработка, наплодившая записи.
  • 🔁 Перенос и загрузка данных. Выгрузка-загрузка через XML, обмены, конвертация — при повторной загрузке пары ключей задвоились.

Чтобы не гадать, начните с быстрой диагностики.

Быстрая диагностика: с чего начать

Определите свой симптом — и сразу видно направление.

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

Способ 1. Очистка кэша (самый безопасный)

Если данные целы, а виноват локальный кэш — помогает за минуту.

  1. Закройте все окна 1С.
  2. Запустите ярлык программы с ключом очистки: в свойствах ярлыка в конце строки Объект допишите /ClearCache (через пробел).
  3. Либо вручную удалите каталог кэша пользователя. Путь вида:
C:\Users\<Пользователь>\AppData\Local\1C\1cv82\<длинный GUID базы>
C:\Users\<Пользователь>\AppData\Local\1C\1cv8\<длинный GUID базы>

Удаляйте только папку конкретной базы (её GUID виден в списке баз при выборе → «Изменить» → строка каталога). Данные это не тронет — кэш пересоберётся при следующем запуске.

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

Способ 2. Тестирование и исправление базы

Годится, когда база пережила сбой: обрыв обновления, аварийное завершение, проблемы с СУБД.

Для файловой базы сначала проверьте физическую целостность утилитой chdbfl.exe (лежит в каталоге платформы, bin):

  1. Закройте базу для всех.
  2. Сделайте резервную копию каталога базы перед любыми правками.
  3. Запустите chdbfl.exe, укажите файл 1Cv8.1CD, поставьте галку «Исправлять обнаруженные ошибки», запустите.

Затем — штатное Тестирование и исправление в конфигураторе: Администрирование → Тестирование и исправление. Отметьте:

  • ✅ Реиндексация таблиц;
  • ✅ Проверка логической целостности;
  • ✅ Проверка ссылочной целостности;
  • ✅ Пересчёт итогов.

💡 Для клиент-серверной базы (PostgreSQL / MS SQL) chdbfl не применяют — работают через Тестирование и исправление в конфигураторе и средства самой СУБД.

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

Способ 3. Найти и удалить дубли через «Все функции»

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

Открыть регистр напрямую

Команда Все функции показывает регистры, минуя проблемный динамический список.

  1. Включите режим: Сервис → Параметры → Отображать команду "Все функции" (галка). В части конфигураций пункт называется Главное меню → Сервис.
  2. Откройте Все функции → Регистры сведений → <нужный регистр>.
  3. Отсортируйте по колонке Ссылка (или по нужному измерению) — задвоенные записи встанут рядом.

Нашли пару одинаковых строк — лишнюю удаляйте (Del), оставляя одну актуальную.

Найти дубли запросом

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

ВЫБРАТЬ
    Т.Ссылка КАК Ссылка,
    КОЛИЧЕСТВО(*) КАК Сколько
ИЗ
    РегистрСведений.ВашРегистр КАК Т
СГРУППИРОВАТЬ ПО
    Т.Ссылка
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(*) > 1

Запрос вернёт только те ссылки, что задвоились. Дальше — точечно удалить лишние записи.

⚠️ Перед удалением поймите, чем строки отличаются (период, другие измерения). Иногда «дубль» по ссылке — это нормальные записи с разными измерениями, а падает список из-за неверно заданного ключа в самой форме. Тогда чинить надо форму (Способ 4), а не данные.

Способ 4. Точный поиск причины через отладку

Когда простые способы не сработали, а ошибка на доработанной форме, — ищем точное место в отладчике.

  1. В конфигураторе включите отладку: Сервис → Параметры → Запуск 1С:Предприятия → галка "Устанавливать режим разрешения отладки".
  2. Поставьте точку останова на открытие проблемной формы списка.
  3. Проверьте текст запроса динамического списка (свойство Основная таблица / произвольный запрос) — нет ли соединений, дающих задвоение строк.

Ускоряет разбор инструмент OneDebugger и подобные — они подсвечивают участок кода, из-за которого список получает неуникальный ключ. Ставится как внешняя обработка, помогает пройти по стеку до конкретной строки.

Типичная находка: в запросе списка есть ЛЕВОЕ СОЕДИНЕНИЕ с таблицей, где на одну ссылку приходится несколько строк. Лечится добавлением РАЗЛИЧНЫЕ, агрегацией или переносом соединения в отдельный запрос.

Сравнение способов: что когда применять

СпособКогда применятьРискВремя
Очистка кэшаСразу после обновления, данные целыНет~1 мин
chdbfl + ТиИБаза падала, сбой обновления/СУБДНизкий (нужна копия)10–60 мин
«Все функции» + удалениеРеальные дубли в регистреСредний (удаляем данные)5–20 мин
Отладка / OneDebuggerОшибка на доработанной формеНизкийот 20 мин

Начинайте сверху вниз: от безопасного к радикальному.

Порядок действий: пройдите по шагам

👣 Пошаговый помощник
Сделайте резервную копию
Копия базы (файл 1Cv8.1CD или выгрузка .dt) до любых правок. Без неё дальше не двигайтесь.

Как предотвратить повторение

  • 💾 Перед обновлением конфигурации и платформы — всегда резервная копия базы.
  • 🔌 Не выключайте сервер и не рвите сеанс во время реструктуризации и обновления.
  • 🧪 Периодически (например, раз в месяц) прогоняйте регламентное Тестирование и исправление в нерабочее время.
  • 🧷 В доработках форм списка следите за уникальностью ключа: РАЗЛИЧНЫЕ и агрегация при соединениях «один ко многим».
  • 📦 После обменов и загрузок XML проверяйте регистры на дубли запросом с группировкой.

Если не помогло

Список всё ещё падает — сузьте область:

  • Проверьте, у всех ли пользователей ошибка. Только у одного — почти наверняка кэш или его профиль.
  • Откройте базу в режиме Конфигуратор → Открыть базу под другим пользователем без расширений — если ошибка ушла, виновато расширение.
  • Выгрузите базу в .dt и загрузите в чистую копию — часть проблем целостности уходит при выгрузке-загрузке.
  • Соберите точный текст ошибки и название регистра/справочника — с этим быстрее найдёте причину или обратитесь к специалисту.

Проверьте себя

✅ Проверьте себя
Ошибка появилась сразу после обновления, данные на месте. С чего начать?
Каким запросом искать задвоенные ссылки в регистре?
Что сделать в первую очередь перед удалением дублей?

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

Что вообще значит «дублирование ключевых значений в колонках: Ссылка»?
Динамический список получил две строки с одинаковым ключом Ссылка и не может показать их в колонках. Причина — либо дубли в регистре/таблице, либо битый кэш.
Удалит ли очистка кэша мои данные?
Нет. Кэш /ClearCache — это временные файлы сеанса на клиенте. Они пересобираются при следующем запуске, данные базы не затрагиваются.
Помогает ли Тестирование и исправление от этой ошибки?
Часто да — оно чинит нарушенную целостность после сбоев. Но логические дубли в регистре сведений нередко приходится искать и удалять вручную.
Как быстро посмотреть регистр, если сам список не открывается?
Через команду Все функции (включается в Сервис → Параметры). Она открывает регистр напрямую, минуя сломанный динамический список.
Ошибка только у одного пользователя — почему?
Почти всегда это его локальный кэш или профиль. Очистите кэш этого пользователя или откройте базу под другим пользователем для проверки.
Можно ли просто удалить одну из двух одинаковых строк?
Да, если строки действительно идентичны по всем измерениям. Если различаются периодом или другими полями — это не дубли, и падает список из-за неверного ключа в самой форме.

Материал подготовлен редакцией 1С 8.3 — независимый справочник. Проверено и обновлено: 12.07.2026. Независимый справочник. Мы не представляем фирму «1С» и не аффилированы с ней.