Это старая версия документа.


В процессе конвертации базы до версии 4.2 выдается сообщение "Нарушение уникальности значений ключа"

Вопрос:

При конвертации базы до версии 4.2 выдаются сообщения следующего вида:

  1. "Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа."
  2. "Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа."

После этого конвертация откатывается. В чем проблема, как ее решить?

Ответ:

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

Сделайте следующее:

  1. Восстановите базу данных из сделанной перед конвертацией резервной копии (см. Загрузка базы данных из файла).
  2. Откройте эту базу данных в Business Studio 4.0/4.1 (в зависимости от того, какой версии был бэкап).
  3. Импортируйте в базе данных данные из соответствующего версии пакета.
  4. Далее откройте справочник "Хранимые фильтры" (в Главном меню программы команда "Отчёты - Хранимые фильтры") и:
    • Если сообщение вида "Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа." - выполните фильтр "База.КолонкаОбъекта - дубли" (фильтр находится по пути Хранимые фильтры\Пользовательские фильтры\Поиск дублей в справочниках импорта). В окне с результатами фильтра записи будут отсортированы по убыванию значения в колонке "Количество(Владелец)". Для каждой из строк со значением > 1 необходимо:
      1. Вызвать от ячейки колонки "Владелец" правой кнопкой мыши контекстное меню и выбрать там пункт "Открыть свойства параметра".
      2. Сделать скриншот открывшегося окна, сохранить его (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта).
      3. Удалить строки с одинаковыми значениями параметра "Параметр класса" (оставить только одну строку с таким значением).
    • Если сообщение вида "Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа." - выполните фильтр "База.ПараметрИмпорта - дубли" (фильтр находится по пути Хранимые фильтры\Пользовательские фильтры\Поиск дублей в справочниках импорта). В окне с результатами фильтра записи будут отсортированы по убыванию значения в колонке "Количество(Владелец)". Для каждой из строк со значением > 1 необходимо:
      1. Вызвать от ячейки колонки "Владелец" правой кнопкой мыши контекстное меню и выбрать там пункт "Открыть свойства параметра".
      2. Сделать скриншот открывшегося окна, сохранить его (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта).
      3. Удалить строки с одинаковыми значениями параметра "Наименование" (оставить только одну строку с таким значением)."
  5. Сделайте резервную копию базы данных (см. Сохранение базы данных в файл).
  6. Попробуйте провести конвертацию этой базы данных.

Скачать файл "search_duplicate_key_in_import_repository.zip" (16 Кб)

Driven by DokuWiki