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


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

Вопрос:

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

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

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

Ответ:

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

Внимание!

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


Для решения проблемы сделайте следующее:

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

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

Driven by DokuWiki