Дублирование ключей в уникальном индексе — как убрать ошибку в 1С 8.3
📋 Содержание
Дублирование ключей в уникальном индексе в 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). Там дубликаты появляются после аварийного завершения, отключения питания или обрыва при проведении.
С чего начать: определите тип базы
Способ лечения зависит от того, где лежит база — в файле или на сервере СУБД. Определитесь сразу, чтобы не тратить время на чужие инструкции.
chdbfl.exe — она чинит физическую структуру файла. Потом при необходимости — управление итогами и тестирование через Конфигуратор. Права администратора Windows на папку с базой обязательны.chdbfl.exe не применяется. Идёте через управление итогами и «Тестирование и исправление» в Конфигураторе. Если СУБД пишет 23505 — работаете на стороне сервера: смотрите, какой констрейнт нарушен, и пересчитываете итоги.1Cv8.1CD. Серверная — если в окне запуска стоит имя сервера 1С и имя базы. Спросите у того, кто настраивал.⚠️ Перед любыми действиями сделайте резервную копию базы. Скопируйте файл
1Cv8.1CD(файловая) или выгрузите.dtчерез Конфигуратор → «Администрирование» → «Выгрузить информационную базу». Без копии любой из способов ниже может добить базу окончательно.
Способ 1. Проверка файловой базы через chdbfl.exe
Работает только для файловых баз. Утилита лежит в каталоге платформы, например C:\Program Files\1cv8\<версия>\bin\chdbfl.exe.
- Закройте все сеансы 1С по этой базе.
- Запустите
chdbfl.exeот имени администратора. - Укажите путь к файлу
1Cv8.1CD. - Поставьте галку «Исправлять обнаруженные ошибки» и нажмите «Выполнить».
- Дождитесь окончания. При крупной базе это долго.
chdbfl чинит физику файла — то, что бьётся после сбоя питания. Логические дубли в итогах он не всегда убирает, поэтому дальше идём в управление итогами.
💡 Если после
chdbflполезлаОшибка формата потока— почистите кэш 1С (см. ниже), это отдельный симптом того же сбоя.
Способ 2. Управление итогами — основное решение
Это главный приём, когда дубликат сидит в итоговой таблице регистра (_ACCRGAT, _AccumRgT). Идея простая: отключаем итоги у проблемного регистра, повторяем операцию, включаем итоги обратно с полным пересчётом.
_AccRg — регистр бухгалтерии, _AccumRg — регистр накопления.В типовых конфигурациях (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) до управления итогами можно дойти и в пользовательском режиме: раздел «Операции» / «Сервис» → «Управление итогами» или обработка «Пересчёт итогов регистров».
Как ошибка проявляется на практике
Классика — Закрытие месяца: появляется запись, при перепроведении вылетает дубль по _ACCRGAT. Или при выборе сотрудника в Бухгалтерии 3.0 выскакивает ошибка неуникального значения. Механизм один — битые итоги, лечение то же.
Способ 3. Тестирование и исправление информационной базы
Если пересчёт итогов не помог, идёте в Конфигуратор → «Администрирование» → «Тестирование и исправление».
Настройки для нашего случая:
- ✅ «Реиндексация таблиц информационной базы»
- ✅ «Пересчёт итогов»
- ✅ «Проверка логической целостности»
- 🔘 Режим «Тестирование и исправление» (не только тестирование)
- 🔘 При обнаружении объектов: сначала «Создавать» / «Не изменять», агрессивные варианты — по ситуации
⚠️ Пункт «Удаление объектов с нарушением ссылочной целостности» и «Пересоздание структуры» применяйте осознанно и только с копией — они могут удалить данные.
Прогон делают в монопольном режиме, когда все пользователи вышли. На большой базе процесс идёт часами.
Способ 4. Кэш и служебные файлы
Иногда дубль сопровождается Ошибкой формата потока или база просто не открывается. Помогает чистка кэша:
- Закройте 1С.
- Удалите содержимое каталога кэша:
%LOCALAPPDATA%\1C\1cv8\<хэш базы>и%APPDATA%\1C\1cv8\<хэш базы>. - Либо запустите базу с ключом очистки:
1cv8 /ClearCache.
Кэш — это временные данные конкретного клиента, их удаление безопасно и не трогает саму базу.
Способ 5. Диагностика на стороне СУБД (PostgreSQL / MS SQL)
Для серверных баз, когда сервер отдаёт 23505, полезно посмотреть, какой именно констрейнт нарушен — сервер обычно пишет имя индекса и конфликтные значения ключа.
Это уже работа администратора. Правка данных напрямую в СУБД в обход платформы 1С — крайняя мера: она нарушает целостность и почти всегда быстрее решается пересчётом итогов из Конфигуратора. Ручные DELETE по итоговым таблицам без понимания структуры добивают базу.
💡 Про утилиты вроде
Tool_1CDдля прямого редактирования файловой базы: это неофициальный инструмент, работа в обход платформы. Использовать только на копии и только когда штатные способы исчерпаны — риск потерять данные высокий.
Типичные ошибки при устранении
- ❌ Начали чинить без резервной копии — откатиться некуда.
- ❌ Прогнали
chdbfl.exeна серверной базе — он для файловых, толку ноль. - ❌ Пересчитали итоги не по тому регистру — не расшифровали имя индекса.
- ❌ Полезли в СУБД с
DELETE, не поняв структуру таблицы. - ❌ Не вывели пользователей — тестирование в монопольном режиме не запускается.
Если не помогло
Когда пройдены chdbfl, пересчёт итогов и «Тестирование и исправление», а ошибка держится:
- Проверьте, не бьётся ли уникальность в справочнике по коду или в документе по номеру — там дубль правят вручную (объединяют или удаляют лишнюю запись).
- Выгрузите базу в
.dtи загрузите в чистую — иногда пересоздание структуры при загрузке снимает конфликт. - На серверной базе привлеките администратора СУБД, чтобы точно локализовать констрейнт.
- Свежая ежедневная копия до момента сбоя часто дешевле долгого ремонта.
Как предотвратить
Дубли в уникальном индексе почти всегда — последствие нештатного завершения работы. Профилактика простая:
- 🔌 ИБП на сервере и рабочей станции с файловой базой — большинство таких ошибок родом из отключения питания.
- 💾 Ежедневный автоматический бэкап (копия файла или выгрузка
.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С» и не аффилированы с ней.