Как исправить ошибку «Записи регистра сведений стали неуникальными: ФИОФизическихЛиц» при переходе на БП 3.0?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переходе с конфигурации «1С:Бухгалтерия предприятия 2.0» на версию 3.0 специалисты часто сталкиваются с критической ошибкой в режиме Конфигуратора: «Записи регистра сведений стали неуникальными: ФИОФизическихЛиц». Эта проблема блокирует процесс реструктуризации базы данных и не позволяет завершить обновление. Давайте подробно разберем, почему возникает эта ситуация, и какими методами ее можно решить.

Выясняем причину возникновения неуникальности

Прежде всего, проанализируем природу данной ошибки. Регистр сведений ФИОФизическихЛиц является периодическим и служит для хранения истории изменения имен, фамилий и отчеств физических лиц. В версии 2.0 и 3.0 структура этого регистра может иметь незначительные, но критичные для платформы различия в индексации или составе измерений.

Рассмотрим основные причины, по которым записи, казавшиеся уникальными в старой версии, становятся «дублями» в новой:

  1. Изменение состава измерений или ресурсов: В новых версиях конфигурации могут добавляться новые поля или меняться свойства существующих (например, длина строки или тип данных). Если в 2.0 уникальность обеспечивалась сочетанием ФизЛицо + Период, а в 3.0 к ним добавляются дополнительные разрезы (например, признак типа записи), система может обнаружить конфликты.
  2. Проблема «невидимых» символов: Это одна из самых частых причин. В базе 2.0 могли существовать две записи для одного человека на одну дату, которые визуально идентичны, но содержат лишний пробел в конце строки фамилии. При реструктуризации платформа 1С может выполнять нормализацию строк, отсекая лишние пробелы. В итоге две разные (с точки зрения БД) записи становятся абсолютно одинаковыми, что вызывает конфликт уникальности.
  3. Разный регистр символов: Записи «Иванов» и «ИВАНОВ» могут восприниматься платформой как дубли при определенных настройках индексации СУБД (Case Insensitive), особенно если при обновлении меняются параметры сравнения строк.
  4. Битые ссылки (Объект не найден): Если в регистре остались записи, ссылающиеся на удаленные элементы справочника ФизическиеЛица, при обновлении они могут быть интерпретированы как пустые значения. Несколько таких «пустых» записей на одну дату гарантированно вызовут ошибку.

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

Для того чтобы не удалять весь регистр целиком и не терять историю изменений ФИО, мы рекомендуем воспользоваться точечным поиском виновников. Разберем, как найти записи, которые имеют одинаковые ключевые поля (измерения).

Воспользуемся консолью запросов и проанализируем ситуацию с помощью следующего кода:


ВЫБРАТЬ
    ФИО.ФизЛицо КАК ФизЛицо,
    ФИО.Период КАК Период,
    КОЛИЧЕСТВО(*) КАК КоличествоДублей
ИЗ
    РегистрСведений.ФИОФизическихЛиц КАК ФИО
СГРУППИРОВАТЬ ПО
    ФИО.ФизЛицо,
    ФИО.Период
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(*) > 1

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

Метод 2: Полная очистка регистра (радикальный способ)

Если история изменений ФИО не является критически важной для учета (например, у сотрудников редко менялись фамилии), или если записей-дублей слишком много, можно рассмотреть вариант полной очистки регистра перед обновлением. Выясним, как это сделать правильно.

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

Для очистки регистра можно использовать простую обработку с кодом:


НаборЗаписей = РегистрыСведений.ФИОФизическихЛиц.СоздатьНаборЗаписей();
НаборЗаписей.Записать();

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

Метод 3: Тестирование и исправление (ТиИ)

Иногда проблема кроется в нарушении логической целостности базы данных на уровне СУБД. Перед тем как приступать к обновлению с 2.0 на 3.0, крайне важно выполнить регламентные операции тестирования.

Рассмотрим шаги по настройке ТиИ:

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

Процесс ТиИ позволит автоматически вычистить те самые «битые ссылки» (Объект не найден), которые часто становятся причиной неуникальности при реструктуризации таблицы регистра.

Метод 4: Анализ записей с «пустым» периодом

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

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

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

Подводя итог, можно составить четкий алгоритм действий для успешного перехода на БП 3.0 без ошибки неуникальности:

  1. Проверка на полных тезок: Убедитесь, что в справочнике ФизическиеЛица нет дублирующихся элементов, которые ссылаются на одни и те же записи в регистре ФИО.
  2. Нормализация строк: Посмотрите, нет ли в фамилиях лишних пробелов. Это можно сделать запросом с использованием функции ПОДОБНО или выгрузкой в Excel для визуального анализа.
  3. Очистка кэша: Часто после удаления дублей Конфигуратор «помнит» ошибку. Обязательно перезапускайте сеанс после внесения изменений в данные.
  4. Типовая структура: Если вы вносили изменения в регистр ФИОФизическихЛиц в версии 2.0 (добавляли свои измерения), перед обновлением необходимо вернуть структуру регистра к полностью типовому виду.

Соблюдение этих шагов позволит вам избежать остановки процесса обновления и успешно перевести учет в актуальную редакцию 1С:Бухгалтерия 3.0.

← На главную