Дублирование ключей в уникальном индексе — как убрать ошибку в 1С 8.3

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

📋 Содержание

Дублирование ключей в уникальном индексе в 1С 8.3 чаще всего лечится пересчётом итогов регистра: заходите в управление итогами, отключаете использование итогов у проблемного регистра, повторяете операцию — и включаете обратно с пересчётом. Индекс, имя которого стоит в тексте ошибки (_ACCRGAT, _AccumRgT и т.п.), прямо указывает на нужную таблицу.

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

Как выглядит ошибка и что она значит

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

Тексты, которые вы видите, зависят от СУБД:

  • Файловая база: Дублирование ключей в уникальном индексе '_ACCRGAT'
  • Файловая база: Попытка вставки неуникального значения в уникальный индекс
  • PostgreSQL: ERROR: duplicate key value violates unique constraint (код 23505)
  • MS SQL: Cannot insert duplicate key row in object ... with unique index

Суть у всех одна. Различается только формулировка сервера.

💡 Имя в кавычках — _ACCRGAT, _AccumRgTn, _Reference123 — это внутреннее имя таблицы СУБД. По нему находят конкретный объект метаданных. Как расшифровать — ниже.

На каком объекте чаще всего вылезает

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

Префикс индексаЧто за объектТипичная причина
_AccRg, _AccRgATрегистр бухгалтерии и его итогибитые итоги после сбоя
_AccumRg, _AccumRgTрегистр накопления и итогинекорректный пересчёт
_Referenceсправочникдубль по коду/наименованию
_Documentдокументдубль по номеру
_InfoRgрегистр сведенийнарушение уникальности измерений

Больше всего обращений — как раз по итоговым таблицам (_ACCRGAT, _AccumRgT). Там дубликаты появляются после аварийного завершения, отключения питания или обрыва при проведении.

С чего начать: определите тип базы

Способ лечения зависит от того, где лежит база — в файле или на сервере СУБД. Определитесь сразу, чтобы не тратить время на чужие инструкции.

🌳 Где хранится ваша база?

⚠️ Перед любыми действиями сделайте резервную копию базы. Скопируйте файл 1Cv8.1CD (файловая) или выгрузите .dt через Конфигуратор → «Администрирование» → «Выгрузить информационную базу». Без копии любой из способов ниже может добить базу окончательно.

Способ 1. Проверка файловой базы через chdbfl.exe

Работает только для файловых баз. Утилита лежит в каталоге платформы, например C:\Program Files\1cv8\<версия>\bin\chdbfl.exe.

  1. Закройте все сеансы 1С по этой базе.
  2. Запустите chdbfl.exe от имени администратора.
  3. Укажите путь к файлу 1Cv8.1CD.
  4. Поставьте галку «Исправлять обнаруженные ошибки» и нажмите «Выполнить».
  5. Дождитесь окончания. При крупной базе это долго.

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

💡 Если после chdbfl полезла Ошибка формата потока — почистите кэш 1С (см. ниже), это отдельный симптом того же сбоя.

Способ 2. Управление итогами — основное решение

Это главный приём, когда дубликат сидит в итоговой таблице регистра (_ACCRGAT, _AccumRgT). Идея простая: отключаем итоги у проблемного регистра, повторяем операцию, включаем итоги обратно с полным пересчётом.

👣 Пошаговый помощник
Шаг 1. Определите регистр по имени индекса
В тексте ошибки стоит имя таблицы. Откройте Конфигуратор → «Администрирование» → «Управление итогами» (или обработку «Управление итогами и агрегатами»). Сопоставьте префикс с регистром: _AccRg — регистр бухгалтерии, _AccumRg — регистр накопления.

В типовых конфигурациях (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) до управления итогами можно дойти и в пользовательском режиме: раздел «Операции» / «Сервис» → «Управление итогами» или обработка «Пересчёт итогов регистров».

Как ошибка проявляется на практике

Классика — Закрытие месяца: появляется запись, при перепроведении вылетает дубль по _ACCRGAT. Или при выборе сотрудника в Бухгалтерии 3.0 выскакивает ошибка неуникального значения. Механизм один — битые итоги, лечение то же.

Способ 3. Тестирование и исправление информационной базы

Если пересчёт итогов не помог, идёте в Конфигуратор → «Администрирование» → «Тестирование и исправление».

Настройки для нашего случая:

  • ✅ «Реиндексация таблиц информационной базы»
  • ✅ «Пересчёт итогов»
  • ✅ «Проверка логической целостности»
  • 🔘 Режим «Тестирование и исправление» (не только тестирование)
  • 🔘 При обнаружении объектов: сначала «Создавать» / «Не изменять», агрессивные варианты — по ситуации

⚠️ Пункт «Удаление объектов с нарушением ссылочной целостности» и «Пересоздание структуры» применяйте осознанно и только с копией — они могут удалить данные.

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

Способ 4. Кэш и служебные файлы

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

  1. Закройте 1С.
  2. Удалите содержимое каталога кэша: %LOCALAPPDATA%\1C\1cv8\<хэш базы> и %APPDATA%\1C\1cv8\<хэш базы>.
  3. Либо запустите базу с ключом очистки: 1cv8 /ClearCache.

Кэш — это временные данные конкретного клиента, их удаление безопасно и не трогает саму базу.

Способ 5. Диагностика на стороне СУБД (PostgreSQL / MS SQL)

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

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

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

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

  • ❌ Начали чинить без резервной копии — откатиться некуда.
  • ❌ Прогнали chdbfl.exe на серверной базе — он для файловых, толку ноль.
  • ❌ Пересчитали итоги не по тому регистру — не расшифровали имя индекса.
  • ❌ Полезли в СУБД с DELETE, не поняв структуру таблицы.
  • ❌ Не вывели пользователей — тестирование в монопольном режиме не запускается.
🩺 Диагностика: выберите симптом

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

Когда пройдены chdbfl, пересчёт итогов и «Тестирование и исправление», а ошибка держится:

  • Проверьте, не бьётся ли уникальность в справочнике по коду или в документе по номеру — там дубль правят вручную (объединяют или удаляют лишнюю запись).
  • Выгрузите базу в .dt и загрузите в чистую — иногда пересоздание структуры при загрузке снимает конфликт.
  • На серверной базе привлеките администратора СУБД, чтобы точно локализовать констрейнт.
  • Свежая ежедневная копия до момента сбоя часто дешевле долгого ремонта.
Порядок действий при ошибке дубликата ключей
Выполнено: 0 / 8

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

Дубли в уникальном индексе почти всегда — последствие нештатного завершения работы. Профилактика простая:

  • 🔌 ИБП на сервере и рабочей станции с файловой базой — большинство таких ошибок родом из отключения питания.
  • 💾 Ежедневный автоматический бэкап (копия файла или выгрузка .dt).
  • 🧹 Регулярное «Тестирование и исправление» по расписанию на серверных базах.
  • 📁 Файловую базу больше 3–4 ГБ переводите на клиент-сервер — файловый формат хуже переживает сбои.
  • 🚪 Корректно закрывайте сеансы, не выключайте машину с зависшей 1С кнопкой питания.
🎬 Видеоинструкция по темепоявится здесь позже

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

Что означает `_ACCRGAT` в тексте ошибки?
Это внутреннее имя таблицы итогов регистра бухгалтерии в СУБД. По префиксу определяют объект: _AccRg — регистр бухгалтерии, _AccumRg — регистр накопления, _Reference — справочник, _Document — документ.
Поможет ли chdbfl.exe при дублировании ключей?
Для файловой базы — да, как первый шаг: он чинит физическую структуру файла после сбоя. Логические дубли в итогах после него добивают пересчётом итогов. Для серверной базы chdbfl не применяется.
Нужна ли резервная копия перед исправлением?
Обязательно. Скопируйте файл 1Cv8.1CD или выгрузите базу в .dt. Любой способ ремонта может усугубить ситуацию, и без копии откатиться будет некуда.
Что делать с ошибкой PostgreSQL 23505?
Это тот же дубликат ключей на серверной базе. Лечится пересчётом итогов из Конфигуратора и «Тестированием и исправлением». Правка данных напрямую в СУБД — крайняя мера для администратора и только на копии.
Ошибка вылезает при закрытии месяца — это то же самое?
Да. При перепроведении или закрытии месяца платформа пишет в итоговые таблицы, и если там дубль — падает ошибка уникального индекса. Решение — управление итогами по проблемному регистру.
Можно ли редактировать базу утилитой Tool_1CD?
Это неофициальный инструмент прямого доступа к файлу базы в обход платформы. Только на копии и только когда штатные способы исчерпаны — риск необратимо повредить данные высокий.

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