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

Описание проблемы

При конвертации базы:

  • до версии 4.2 - выдается сообщение одного из следующих видов (после этого конвертация откатывается):
    • "Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа."
    • "Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа."
    • "Нарушение уникальности значений ключа 'User,КатегорияПрав' класса 'База.ПраваПользователя'. Удалите записи, нарушающие уникальность ключа."
  • до версии 5 или 5.1 - выдается сообщение одного из следующих видов (после этого конвертация прерывается):
    • "Нарушение уникальности значений ключа 'User,Меню' класса 'База.ПраваНаМеню'. Удалите записи, нарушающие уникальность ключа."
    • "Нарушение уникальности значений ключа 'Владелец,ТипКонтакта' класса 'БизнесМодель.КонтактыФизЛиц'. Удалите записи, нарушающие уникальность ключа."
    • "Нарушение уникальности значений ключа 'ПереченьПараметровКлюча' класса 'НазваниеКласса'. Удалите записи, нарушающие уникальность ключа.", где ПереченьПараметровКлюча и НазваниеКласса - любые, кроме перечисленных выше.
  • до версии 6.0 и выше - выдается сообщение одного из следующих видов (после этого конвертация прерывается):
    • "Нарушение уникальности значений ключа 'Person' класса 'BizArch.UsersSettings'. Удалите записи, нарушающие уникальность ключа" или "Нарушение уникальности значений ключа 'Физическое лицо' класса 'Настройки пользователей Business Studio'. Удалите записи, нарушающие уникальность ключа".
    • "Нарушение уникальности значений ключа 'ПереченьПараметровКлюча' класса 'НазваниеКласса'. Удалите записи, нарушающие уникальность ключа.", где ПереченьПараметровКлюча и НазваниеКласса - любые, кроме перечисленных выше.

Решение проблемы

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

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

Текст сообщения об ошибке Рекомендации по решению проблемы
1 Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа. См. раздел Решение проблемы с уникальностью значений ключа в классах "База.КолонкаОбъекта" и "База.ПараметрИмпорта" ниже.
2 Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа.
3 Нарушение уникальности значений ключа 'User,КатегорияПрав' класса 'База.ПраваПользователя'. Удалите записи, нарушающие уникальность ключа. См. раздел Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователя" ниже.
4 Нарушение уникальности значений ключа 'User,Меню' класса 'База.ПраваНаМеню'. Удалите записи, нарушающие уникальность ключа. См. раздел Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователяНаМеню" ниже.
5 Нарушение уникальности значений ключа 'Владелец,ТипКонтакта' класса 'БизнесМодель.КонтактыФизЛиц'. Удалите записи, нарушающие уникальность ключа. См. раздел Решение проблемы с уникальностью значений ключа в классе "БизнесМодель.КонтактыФизЛиц" ниже.
6 Нарушение уникальности значений ключа 'Person' класса 'BizArch.UsersSettings'. Удалите записи, нарушающие уникальность ключа. См. раздел Решение проблемы с уникальностью значений ключа в классе "Настройки пользователей Business Studio" (BizArch.UsersSettings) ниже.
Нарушение уникальности значений ключа 'Физическое лицо' класса 'Настройки пользователей Business Studio'. Удалите записи, нарушающие уникальность ключа.
7 Текст "Нарушение уникальности значений ключа 'ПереченьПараметровКлюча' класса 'НазваниеКласса'. Удалите записи, нарушающие уникальность ключа.", где ПереченьПараметровКлюча и НазваниеКласса - любые, кроме перечисленных выше. Проблему можно решать по аналогии с описанием решения для проблемы Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователяНаМеню". Если при этом возникнут вопросы или сложности, для решения проблемы можно обратиться на техподдержку со страницы Системы интерактивной поддержки Ошибки при операциях с базой данных.
Таблица 1. Перечень известных ошибок, возникающих при конвертации, и рекомендаций по их решению

Решение проблемы с уникальностью значений ключа в классах "База.КолонкаОбъекта" и "База.ПараметрИмпорта"

Внимание!

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


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

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

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

Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователя"

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

  1. Восстановите базу данных из сделанной перед конвертацией резервной копии (см. Загрузка базы данных из файла).
  2. Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации.
  3. Откройте справочник "Права пользователя" (см. здесь).
  4. Отобразите колонки "User" и "Категория прав" (с помощью команды меню "Действия - Настройка колонок" вызовите окно настройки, отметьте эти строки флажками и нажмите кнопку "Применить") и отсортируйте справочник по колонке "User" кликом левой клавиши мыши по заголовку колонки.
  5. Найдите записи-дубли с одинаковыми значениями в обеих этих колонках и удалите неактуальную запись с заменой ссылок на актуальную, выбирая соответствующий пункт в окне удаления.
  6. Повторите предыдущий пункт для всех дублей.
  7. Сделайте резервную копию базы данных (см. Сохранение базы данных в файл).
  8. Попробуйте провести конвертацию этой базы данных.

Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователяНаМеню"

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

  1. Восстановите базу данных из сделанной перед конвертацией резервной копии (см. Загрузка базы данных из файла).
  2. Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации.
  3. Откройте справочник "Права пользователя на меню" (см. здесь) .
  4. Отобразите колонки "Пользователь" и "Меню" (с помощью команды меню "Действия - Настройка колонок" вызовите окно настройки, отметьте эти строки флажками и нажмите кнопку "Применить") и отсортируйте справочник по колонке "User" кликом левой клавиши мыши по заголовку колонки.
  5. Найдите записи-дубли с одинаковыми значениями в обеих этих колонках и удалите их, оставляя по 1 строке для каждой такой ситуации.
  6. Сделайте резервную копию базы данных (см. Сохранение базы данных в файл).
  7. Попробуйте провести конвертацию этой базы данных.

Решение проблемы с уникальностью значений ключа в классе "БизнесМодель.КонтактыФизЛиц"

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

  1. Восстановите базу данных из сделанной перед конвертацией резервной копии (см. Загрузка базы данных из файла).
  2. Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации.
  3. Откройте справочник "БизнесМодель.КонтактыФизЛиц" (в Главном меню пункт "Справочники - Все справочники", в открывшемся окне вызовите окно поиска сочетанием клавиш "Ctrl+F", проведите поиск по БизнесМодель.КонтактыФизЛиц, откройте найденный справочник).
  4. Включите возможность редактировать значения полей из окна справочника (с помощью команды меню "Действия - Редактирование значений колонок").
  5. Отобразите колонки "Владелец" и "Тип контакта" (с помощью команды меню "Действия - Настройка колонок" вызовите окно настройки, отметьте эти строки флажками и нажмите кнопку "Применить") и отсортируйте справочник по колонке "Владелец" кликом левой клавиши мыши по заголовку колонки.
  6. Найдите записи-дубли с одинаковыми значениями в обеих этих колонках, после этого:
    • Для тех из этих записей, у которых также полностью идентичны значения в поле "Контакт" - удалите лишние записи, оставляя по 1 строке для каждой такой ситуации.
    • Для тех из этих записей, у которых также значения в поле "Контакт" разные - скорее всего требуется сохранить все такие контакты. Для того, чтобы это сделать, нужно устранить проблему с уникальностью значения ключа. Это делается путем выбора для данной строки другого типа контакта той же категории (например, можно создать для электронной почты типы контакта "Электронная почта 2" и "Электронная почта 3" с категорией "Почта" и назначать их дублирующим контактам электронной почты одного и того же физлица):
  7. Сделайте резервную копию базы данных (см. Сохранение базы данных в файл).
  8. Попробуйте провести конвертацию этой базы данных.

Решение проблемы с уникальностью значений ключа в классе "Настройки пользователей Business Studio" (BizArch.UsersSettings)

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

  1. Восстановите базу данных из сделанной перед конвертацией резервной копии (см. Загрузка базы данных из файла).
  2. Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации.
  3. Откройте справочник "Настройки пользователей Business Studio" (Главное меню - Справочники - Все справочники - включить флажок "Показать все", Самостоятельные объекты - Настройки пользователей - Настройки пользователей Business Studio).
  4. Отобразите колонку "Физическое лицо", если она у вас не выведена на показ (с помощью команды меню "Действия - Настройка колонок" вызовите окно настройки, отметьте эту строку флажком и нажмите кнопку "Применить"), и отсортируйте справочник по колонке "Физическое лицо" кликом левой клавиши мыши по заголовку колонки.
  5. Найдите записи-дубли с одинаковым значением в этой колонке и решите проблему дублирования одним из следующих способов:
    1. Удалите некорректную запись/записи (если такая/такие есть).
    2. Смените физлицо для записи/записей на другое/другие, чтобы избежать дублирования.
  6. Повторите предыдущий пункт для всех дублей.
  7. Сделайте резервную копию базы данных (см. Сохранение базы данных в файл).
  8. Попробуйте провести конвертацию этой базы данных.
« ПредыдущаяНа уровень вышеСледующая »
 
Driven by DokuWiki