Различия

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

Ссылка на это сравнение

ru:update:conversion_error_duplicate_key [2016/12/15 11:34]
belkin
ru:update:conversion_error_duplicate_key [2024/02/07 08:17] (текущий)
belkin [Решение проблемы]
Строка 1: Строка 1:
-====== В процессе конвертации базы до версии 4.2 выдается сообщение "Нарушение уникальности значений ключа" ======+====== В процессе конвертации базы выдается сообщение "Нарушение уникальности значений ключа" ======
  
-**__Вопрос:__**+===== Описание проблемы =====
  
-При конвертации базы до версии 4.2 выдаются сообщения следующего вида: +При конвертации базы
-  - "Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа." +  * до версии 4.2 выдается сообщение одного из следующих видов (после этого конвертация откатывается)
-  - "Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа."+    * "Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа." 
 +    * "Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа." 
 +    * "Нарушение уникальности значений ключа 'User,КатегорияПрав' класса 'База.ПраваПользователя'. Удалите записи, нарушающие уникальность ключа." 
 +  * до версии 5 или 5.1 - выдается сообщение одного из следующих видов (после этого конвертация прерывается): 
 +    * "Нарушение уникальности значений ключа 'User,Меню' класса 'База.ПраваНаМеню'. Удалите записи, нарушающие уникальность ключа." 
 +    * "Нарушение уникальности значений ключа 'Владелец,ТипКонтакта' класса 'БизнесМодель.КонтактыФизЛиц'. Удалите записи, нарушающие уникальность ключа." 
 +    * "Нарушение уникальности значений ключа '**ПереченьПараметровКлюча**' класса '**НазваниеКласса**'. Удалите записи, нарушающие уникальность ключа.", где **ПереченьПараметровКлюча** и **НазваниеКласса** - любые, кроме перечисленных выше. 
 +  * до версии 6.0 - выдается сообщение одного из следующих видов (после этого конвертация прерывается): 
 +    * "Нарушение уникальности значений ключа 'Person' класса 'BizArch.UsersSettings'. Удалите записи, нарушающие уникальность ключа." 
 +    * "Нарушение уникальности значений ключа '**ПереченьПараметровКлюча**' класса '**НазваниеКласса**'. Удалите записи, нарушающие уникальность ключа.", где **ПереченьПараметровКлюча** и **НазваниеКласса** - любые, кроме перечисленных выше. 
 +===== Решение проблемы =====
  
 +Вероятно, в исходной базе (в той, что была до конвертирования) имеется дублирование значений тех параметров, для которых ранее не существовало требований уникальности, а теперь (в новой версии программы) эти требования появились.  
  
-После этого конвертация откатывается. В чем проблема, как ее решить?  +Ссылки на статьи по решения каждой из указанных проблем приведены в таблице ниже.
-\\ \\+
  
-**__Ответ:__**+<startTableBox> 
 +^  №  ^  Текст сообщения об ошибке  ^  Рекомендации по решению проблемы  ^ 
 +|  1 | Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа.  | См. раздел [[ru/update/conversion_error_duplicate_key#решение_проблемы_с_уникальностью_значений_ключа_в_классах_базаколонкаобъекта_и_базапараметримпорта|Решение проблемы с уникальностью значений ключа в классах "База.КолонкаОбъекта" и "База.ПараметрИмпорта"]] ниже.  | 
 +|  2 | Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа.  | ::: | 
 +|  3 | Нарушение уникальности значений ключа 'User,КатегорияПрав' класса 'База.ПраваПользователя'. Удалите записи, нарушающие уникальность ключа.  | См. раздел [[ru/update/conversion_error_duplicate_key#решение_проблемы_с_уникальностью_значений_ключа_в_классе_базаправапользователя|Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователя"]] ниже.  | 
 +|  4 | Нарушение уникальности значений ключа 'User,Меню' класса 'База.ПраваНаМеню'. Удалите записи, нарушающие уникальность ключа.  | См. раздел [[ru/update/conversion_error_duplicate_key#решение_проблемы_с_уникальностью_значений_ключа_в_классе_базаправапользователянаменю|Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователяНаМеню"]] ниже.  | 
 +|  5 | Нарушение уникальности значений ключа 'Владелец,ТипКонтакта' класса 'БизнесМодель.КонтактыФизЛиц'. Удалите записи, нарушающие уникальность ключа.  | См. раздел [[ru/update/conversion_error_duplicate_key#решение_проблемы_с_уникальностью_значений_ключа_в_классе_бизнесмодельконтактыфизлиц|Решение проблемы с уникальностью значений ключа в классе "БизнесМодель.КонтактыФизЛиц"]] ниже.  | 
 +|  6 | Нарушение уникальности значений ключа 'Person' класса 'BizArch.UsersSettings'. Удалите записи, нарушающие уникальность ключа.  | См. раздел [[ru/update/conversion_error_duplicate_key#решение_проблемы_с_уникальностью_значений_ключа_в_классе_настройки_пользователей_business_studio_bizarchuserssettings|Решение проблемы с уникальностью значений ключа в классе "Настройки пользователей Business Studio" (BizArch.UsersSettings)]] ниже.  | 
 +| ::: | Нарушение уникальности значений ключа 'Физическое лицо' класса 'Настройки пользователей Business Studio'. Удалите записи, нарушающие уникальность ключа.  | ::: | 
 +|  7 | Текст "Нарушение уникальности значений ключа '**ПереченьПараметровКлюча**' класса '**НазваниеКласса**'. Удалите записи, нарушающие уникальность ключа.", где **ПереченьПараметровКлюча** и **НазваниеКласса** - любые, кроме перечисленных выше.  | Проблему можно решать по аналогии с описанием решения для проблемы [[ru/update/conversion_error_duplicate_key#решение_проблемы_с_уникальностью_значений_ключа_в_классе_базаправапользователянаменю|Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователяНаМеню"]]. Если при этом возникнут вопросы или сложности, для решения проблемы можно обратиться на техподдержку со страницы Системы интерактивной поддержки [[ru/interactive_support/start_and_install/start_errors/db_operations_errors]].  |
  
-Вероятно, в исходной базе (в той, что была до конвертирования) имеется дублирование значений тех параметров, для которых ранее не существовало требований уникальности, а теперь эти требования появились.  +<endTableBox|Таблица 1. Перечень известных ошибок, возникающих при конвертации, и рекомендаций по их решению>
  
 +==== Решение проблемы с уникальностью значений ключа в классах "База.КолонкаОбъекта" и "База.ПараметрИмпорта" ====
  
 == Внимание! == == Внимание! ==
-Описываемый ниже способ исправления проблемы включает в себя удаление записей, что может нарушить логику работы пакетов импорта: ранее для таких ситуаций происходил импорт в одно поле из разных параметров файла (что в целом не совсем верно, но так пакеты ранее настроить было можно), теперь же, начиная с версии 4.2, такую загрузку, если в ней действительно есть необходимость, надо делать через отдельные этапы импорта. Используя приведённую ниже инструкцию, Вы не переделываете пакет импорта под новые требования, а просто исправляете препятствие для конвертации, удаляя дублирующие записи из списков соответствий параметров пакетов импорта. В связи с этим дальнейшем может потребоваться доработка соответствующего пакетов импорта.+Описываемый ниже способ исправления проблемы включает в себя удаление записей, что может нарушить логику работы пакетов импорта: ранее для таких ситуаций происходил импорт в одно поле из разных параметров файла (что в целом не совсем верно, но так пакеты ранее настроить было можно), теперь же, начиная с версии 4.2, такую загрузку, если в ней действительно есть необходимость, надо делать через отдельные этапы импорта. Используя приведённую ниже инструкцию, Вы не переделываете пакет импорта под новые требования, а просто исправляете препятствие для конвертации, удаляя дублирующие записи из списков соответствий параметров пакетов импорта. В связи с этим в дальнейшем может потребоваться доработка соответствующего пакета импорта.
 ===== ===== ===== =====
 \\ \\
Строка 23: Строка 43:
 **Для решения проблемы сделайте следующее:** **Для решения проблемы сделайте следующее:**
  
-  - Восстановите базу данных из сделанной перед конвертацией резервной копии (см. [[http://wiki.businessstudio.ru/docs/current/doku.php/ru/manual/install/dbcontrol#загрузка_базы_данных_из_файла|Загрузка базы данных из файла]]). +  - Восстановите базу данных из сделанной перед конвертацией резервной копии (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/load_db_from_backup|Загрузка базы данных из файла]]). 
-  - Откройте эту базу данных в Business Studio 4.0/4.1 (в зависимости от того, какой версии был бэкап).+  - Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации.
   - Скачайте архив по ссылке под текстом данной статьи, распакуйте его содержимое в отдельную папку. В папке будет 5 файлов, название каждого из них будет содержать версию базы данных.   - Скачайте архив по ссылке под текстом данной статьи, распакуйте его содержимое в отдельную папку. В папке будет 5 файлов, название каждого из них будет содержать версию базы данных.
   - Импортируйте в Вашу базу данных информацию из файла, номер версии в названии которого соответствует номеру версии базы, использующейся в Вашей версии Business Studio (соответствия номеров версий Business Studio можно посмотреть в [[ru/versions/versions|Истории версий]]).   - Импортируйте в Вашу базу данных информацию из файла, номер версии в названии которого соответствует номеру версии базы, использующейся в Вашей версии Business Studio (соответствия номеров версий Business Studio можно посмотреть в [[ru/versions/versions|Истории версий]]).
Строка 41: Строка 61:
                - Откройте её свойства по кнопке на верхней панели окна поиска ссылок.                 - Откройте её свойства по кнопке на верхней панели окна поиска ссылок. 
                - В открывшемся окне с помощью команды меню "Действия - Настройка колонок" выведите на показ колонку "Владелец" (выделите в открывшемся окне галочкой и нажмите кнопку "Применить").                - В открывшемся окне с помощью команды меню "Действия - Настройка колонок" выведите на показ колонку "Владелец" (выделите в открывшемся окне галочкой и нажмите кнопку "Применить").
-               - Вызовите от заголовка выведенной на показ колонки "Владелец" правой кнопкой мыши контекстное меню и выберите в нём пункт "Открыть свойства параметра"+               - Вызовите от заголовка выведенной на показ колонки "Владелец" правой кнопкой мыши контекстное меню и выберите в нём пункт "Открыть свойства параметра" - откроется окно настройки пакета импорта
-               Далее откроется окно настройки пакета импорта, где надо будет открыть вкладку "Параметры"сделать скриншот всего окна настройки пакета импорта при открытой этой вкладке (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта, в соответствии с которой надо будет внести правки в пакет в версии 4.2), а затем удалить с ней будет удалить строки с одинаковыми значениями в колонке "Параметр класса" (оставить только одну строку с таким значением).        +               - В окне настройки пакета импорта откройте вкладку "Параметры" и сделать скриншот всего окна настройки пакета импорта при открытой этой вкладке (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта, в соответствии с которой надо будет внести правки в пакет в версии 4.2) 
-  - Сделайте резервную копию базы данных (см. [[http://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol#сохранение_базы_данных_в_файл|Сохранение базы данных в файл]]).+               - Удалите со вкладки "Параметры" строки с одинаковыми значениями в колонке "Параметр класса" (оставить только одну строку с таким значением) и сохраните пакет нажатием соответствующей кнопки в нижней части окна его настройки.        
 +  - Сделайте резервную копию базы данных (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/create_backup|Сохранение базы данных в файл]]).
   - Попробуйте провести конвертацию этой базы данных.   - Попробуйте провести конвертацию этой базы данных.
  
 {{ ru/base/update/conversion_error_duplicate_key/search_duplicate_key_in_import_repository.zip|Скачать файл "search_duplicate_key_in_import_repository.zip" (16 Кб)}} {{ ru/base/update/conversion_error_duplicate_key/search_duplicate_key_in_import_repository.zip|Скачать файл "search_duplicate_key_in_import_repository.zip" (16 Кб)}}
  
-{{tag>"Business Studio 4.2"}}+==== Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователя" ==== 
 + 
 +**Для решения проблемы сделайте следующее:** 
 +  - Восстановите базу данных из сделанной перед конвертацией резервной копии (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/load_db_from_backup|Загрузка базы данных из файла]]). 
 +  - Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации. 
 +  - Откройте справочник "Права пользователя" (см. [[http://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/administration/user_rights#назначение_категории_прав_пользователю|здесь]]). 
 +  - Отобразите колонки "User" и "Категория прав" (с помощью команды меню "Действия - Настройка колонок" вызовите окно настройки, отметьте эти строки флажками и нажмите кнопку "Применить") и отсортируйте справочник по колонке "User" кликом левой клавиши мыши по заголовку колонки. 
 +  - Найдите записи-дубли с одинаковыми значениями в обеих этих колонках и удалите неактуальную запись с заменой ссылок на актуальную, выбирая соответствующий пункт в окне удаления. 
 +  - Повторите предыдущий пункт для всех дублей. 
 +  - Сделайте резервную копию базы данных (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/create_backup|Сохранение базы данных в файл]]). 
 +  - Попробуйте провести конвертацию этой базы данных. 
 + 
 +==== Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователяНаМеню" ==== 
 + 
 +**Для решения проблемы сделайте следующее:** 
 +  - Восстановите базу данных из сделанной перед конвертацией резервной копии (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/load_db_from_backup|Загрузка базы данных из файла]]). 
 +  - Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации. 
 +  - Откройте справочник "Права пользователя на меню" (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/administration/user_rights#разрешение_на_доступ_к_меню"|здесь]]) . 
 +  - Отобразите колонки "Пользователь" и "Меню" (с помощью команды меню "Действия - Настройка колонок" вызовите окно настройки, отметьте эти строки флажками и нажмите кнопку "Применить") и отсортируйте справочник по колонке "User" кликом левой клавиши мыши по заголовку колонки. 
 +  - Найдите записи-дубли с одинаковыми значениями в обеих этих колонках и удалите их, оставляя по 1 строке для каждой такой ситуации. 
 +  - Сделайте резервную копию базы данных (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/create_backup|Сохранение базы данных в файл]]). 
 +  - Попробуйте провести конвертацию этой базы данных. 
 + 
 +==== Решение проблемы с уникальностью значений ключа в классе "БизнесМодель.КонтактыФизЛиц" ==== 
 + 
 +**Для решения проблемы сделайте следующее:** 
 +  - Восстановите базу данных из сделанной перед конвертацией резервной копии (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/load_db_from_backup|Загрузка базы данных из файла]]). 
 +  - Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации. 
 +  - Откройте справочник "БизнесМодель.КонтактыФизЛиц" (в Главном меню пункт "Справочники - Все справочники", в открывшемся окне вызовите окно поиска сочетанием клавиш "Ctrl+F", проведите поиск по **БизнесМодель.КонтактыФизЛиц**, откройте найденный справочник). 
 +  - Включите возможность редактировать значения полей из окна справочника (с помощью команды меню "Действия - Редактирование значений колонок"). 
 +  - Отобразите колонки "Владелец" и "Тип контакта" (с помощью команды меню "Действия - Настройка колонок" вызовите окно настройки, отметьте эти строки флажками и нажмите кнопку "Применить") и отсортируйте справочник по колонке "Владелец" кликом левой клавиши мыши по заголовку колонки. 
 +  - Найдите записи-дубли с одинаковыми значениями в обеих этих колонках, после этого: 
 +    * Для тех из этих записей, у которых также полностью идентичны значения в поле "Контакт" - удалите лишние записи, оставляя по 1 строке для каждой такой ситуации. 
 +    * Для тех из этих записей, у которых также значения в поле "Контакт" разные - скорее всего требуется сохранить все такие контакты. Для того, чтобы это сделать, нужно устранить проблему с уникальностью значения ключа. Это делается путем выбора для данной строки другого типа контакта той же категории (например, можно создать для электронной почты типы контакта "Электронная почта 2" и "Электронная почта 3" с категорией "Почта" и назначать их дублирующим контактам электронной почты одного и того же физлица): \\ {{ ru/update/conversion_error_duplicate_key/conversion_error_duplicate_key_01.png?nolink }}    
 +  - Сделайте резервную копию базы данных (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/create_backup|Сохранение базы данных в файл]]). 
 +  - Попробуйте провести конвертацию этой базы данных. 
 + 
 +==== Решение проблемы с уникальностью значений ключа в классе "Настройки пользователей Business Studio" (BizArch.UsersSettings) ==== 
 + 
 +**Для решения проблемы сделайте следующее:** 
 +  - Восстановите базу данных из сделанной перед конвертацией резервной копии (см. [[https://www.businessstudio.ru/help/docs/current/doku.php/ru/manual/install/dbcontrol/load_db_from_backup|Загрузка базы данных из файла]]). 
 +  - Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации. 
 +  - Откройте справочник "Настройки пользователей Business Studio" (Главное меню - Справочники - Все справочники - включить флажок "Показать все", Самостоятельные объекты - Настройки пользователей - Настройки пользователей Business Studio). 
 +  - Отобразите колонку "Физическое лицо", если она у вас не выведена на показ (с помощью команды меню "Действия - Настройка колонок" вызовите окно настройки, отметьте эту строку флажком и нажмите кнопку "Применить"), и отсортируйте справочник по колонке "Физическое лицо" кликом левой клавиши мыши по заголовку колонки. 
 +  - Найдите записи-дубли с одинаковым значением в этой колонке и решите проблему дублирования одним из следующих способов:  
 +    - Удалите некорректную запись/записи (если такая/такие есть).  
 +    - Смените физлицо для записи/записей на другое/другие, чтобы избежать дублирования. 
 +  - Повторите предыдущий пункт для всех дублей. 
 +  - Сделайте резервную копию базы данных (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/create_backup|Сохранение базы данных в файл]]). 
 +  - Попробуйте провести конвертацию этой базы данных. 
 + 
 + 
 +{{tag>"Business Studio 4.2" "Business Studio 5" "Business Studio 6" }
 + 
 + 
 + 
 + 
 + 
 +[<contextnavigator>] 
 +{(rater>id=ru_update_conversion_error_duplicate_key|name=В процессе конвертации базы выдается сообщение "Нарушение уникальности значений ключа"|type=vote|trace=ip|img=:taggic.png|headline=off)}
Driven by DokuWiki