Как исправить ошибку «Записи регистра сведений стали неуникальными: Присоединенные файлы» при обновлении 1С:Бухгалтерия 2.0?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия
← На главную

При обновлении конфигурации 1С:Бухгалтерия предприятия 2.0 (например, при переходе на релиз 2.0.29.3 и выше) многие технические специалисты сталкиваются с блокирующей ошибкой в окне «Реорганизация информации». Платформа выдает сообщение: «Записи регистра сведений стали неуникальными. Присоединенные файлы». В этой ситуации кнопка «Принять» становится неактивной, и стандартное обновление штатным способом продолжить невозможно. Давайте детально разберем причины возникновения этой ситуации и пошагово рассмотрим методы ее решения.

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

Прежде чем приступать к исправлению, проанализируем механику работы платформы 1С:Предприятие 8.2/8.3. Регистр сведений — это объект метаданных, уникальность записей в котором определяется комбинацией его измерений. В новых версиях конфигураций разработчики часто меняют структуру этого регистра: удаляют старые измерения, добавляют новые или изменяют тип существующих.

Рассмотрим ситуацию: в старой версии конфигурации уникальность записи в регистре ПрисоединенныеФайлы обеспечивалась тремя измерениями (например, ВладелецФайла, ИмяФайла и ДополнительныйПараметр). Если в новой версии измерение ДополнительныйПараметр удаляется, то записи, которые раньше различались только этим полем, теперь становятся идентичными. Платформа обнаруживает дубли по оставшимся измерениям и блокирует реструктуризацию базы данных, так как это нарушает базовый принцип уникальности регистра.

Также часто причиной становятся «битые ссылки». Если в базе была проведена свертка или некорректное удаление документов, в регистре могут остаться записи, ссылающиеся на несуществующих владельцев (объекты с пометкой <Объект не найден>). При реструктуризации такие записи также могут конфликтовать между собой.

Метод 1. Использование штатного механизма «Тестирование и исправление»

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

  1. Обязательно создадим резервную копию базы данных (выгрузка .dt или копирование файла 1Cv8.1CD).
  2. Зайдем в режим Конфигуратор.
  3. Перейдем в меню Администрирование — Тестирование и исправление.
  4. Установим флажки на пунктах:
    • Проверка логической целостности;
    • Реорганизация таблиц информационной базы.
  5. В нижней части окна, в блоке «При наличии ссылок на несуществующие объекты», выберем вариант Очищать ссылки или Удалять объект.
  6. Нажмем «Выполнить» и дождемся завершения процесса.

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

Метод 2. Поиск и удаление дублей через консоль запросов

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

Пример алгоритма действий:

  1. Откроем консоль запросов.
  2. Напишем запрос к регистру сведений ПрисоединенныеФайлы.
  3. Выберем все измерения (обычно это ВладелецФайла и ИмяФайла).
  4. Выполним группировку по этим полям и добавим условие на количество записей в группе.

Примерный текст запроса для поиска виновников:


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

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

Метод 3. Очистка битых ссылок (Объект не найден)

Как упоминалось в обсуждении на форуме, автор делал свертку базы. Это типичный сценарий появления записей-сирот. Если в поле Владелец вместо названия документа вы видите длинную строку типа <Объект не найден> (84:bf00001ec902047111e0388713063f25), значит, сам документ был удален, а запись в регистре осталась.

Рассмотрим порядок действий для очистки таких записей:

  1. Воспользуемся обработкой «Поиск и удаление битых ссылок» (ее можно найти на дисках ИТС или в составе типовых инструментов администратора).
  2. Если записи не удаляются автоматически, напишем небольшой программный код для очистки регистра.

Пример кода для удаления записей с битыми ссылками:


НаборЗаписей = РегистрыСведений.ПрисоединенныеФайлы.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();

Индекс = 0;
Пока Индекс < НаборЗаписей.Количество() Цикл
    Запись = НаборЗаписей[Индекс];
    // Проверяем, существует ли объект в базе
    Если Запись.ВладелецФайла.ПолучитьОбъект() = Неопределено Тогда
        НаборЗаписей.Удалить(Запись);
        Продолжить;
    КонецЕсли;
    Индекс = Индекс + 1;
КонецЦикла;

НаборЗаписей.Записать();

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

Метод 4. Радикальный способ: Очистка регистра перед обновлением

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

Выясним, как это сделать наиболее эффективно:

Метод 5. Анализ изменений длины строк

Иногда ошибка кроется не в удалении полей, а в их сокращении. Проанализируем ситуацию: если в старой версии длина измерения ИмяФайла была 255 символов, а в новой версии ее ограничили до 100 символов, то файлы с именами "Отчет_за_январь_2023_года_вариант_1.pdf" и "Отчет_за_январь_2023_года_вариант_2.pdf" при обрезке до 100 символов могут стать идентичными.

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

Резюме и рекомендации

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

  1. Попробуйте выполнить Тестирование и исправление с опцией очистки битых ссылок.
  2. Если это не помогло, используйте консоль запросов для выявления конкретных дублей.
  3. Проверьте наличие владельцев файлов — после свертки базы именно они чаще всего вызывают конфликты.
  4. В крайнем случае используйте методику выгрузки-очистки-загрузки через XML.

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

← На главную