Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
ru:update:conversion_error_duplicate_key [2016/12/12 14:30] belkin |
ru:update:conversion_error_duplicate_key [2024/07/30 14:54] (текущий) aliev |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== В процессе конвертации базы до версии 4.2 выдается сообщение "Нарушение уникальности значений ключа" ====== | + | ====== В процессе конвертации базы выдается сообщение "Нарушение уникальности значений ключа" ====== |
- | **__Вопрос:__** | + | ===== Описание проблемы ===== |
- | При конвертации базы до версии 4.2 выдаются сообщения следующего вида: | + | При конвертации базы: |
- | - "Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа." | + | * до версии 4.2 - выдается сообщение одного из следующих видов (после этого конвертация откатывается): |
- | - "Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа." | + | * "Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа." |
+ | * "Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа." | ||
+ | * "Нарушение уникальности значений ключа 'User,КатегорияПрав' класса 'База.ПраваПользователя'. Удалите записи, нарушающие уникальность ключа." | ||
+ | * до версии 5 или 5.1 - выдается сообщение одного из следующих видов (после этого конвертация прерывается): | ||
+ | * "Нарушение уникальности значений ключа 'User,Меню' класса 'База.ПраваНаМеню'. Удалите записи, нарушающие уникальность ключа." | ||
+ | * "Нарушение уникальности значений ключа 'Владелец,ТипКонтакта' класса 'БизнесМодель.КонтактыФизЛиц'. Удалите записи, нарушающие уникальность ключа." | ||
+ | * "Нарушение уникальности значений ключа '**ПереченьПараметровКлюча**' класса '**НазваниеКласса**'. Удалите записи, нарушающие уникальность ключа.", где **ПереченьПараметровКлюча** и **НазваниеКласса** - любые, кроме перечисленных выше. | ||
+ | * до версии 6.0 и выше - выдается сообщение одного из следующих видов (после этого конвертация прерывается): | ||
+ | * "Нарушение уникальности значений ключа 'Person' класса 'BizArch.UsersSettings'. Удалите записи, нарушающие уникальность ключа" или "Нарушение уникальности значений ключа 'Физическое лицо' класса 'Настройки пользователей Business Studio'. Удалите записи, нарушающие уникальность ключа". | ||
+ | * "Нарушение уникальности значений ключа '**ПереченьПараметровКлюча**' класса '**НазваниеКласса**'. Удалите записи, нарушающие уникальность ключа.", где **ПереченьПараметровКлюча** и **НазваниеКласса** - любые, кроме перечисленных выше. | ||
+ | ===== Решение проблемы ===== | ||
+ | Вероятно, в исходной базе (в той, что была до конвертирования) имеется дублирование значений тех параметров, для которых ранее не существовало требований уникальности, а теперь (в новой версии программы) эти требования появились. | ||
- | После этого конвертация откатывается. В чем проблема, как ее решить? | + | Ссылки на статьи по решения каждой из указанных проблем приведены в таблице ниже. |
- | \\ \\ | + | |
- | **__Ответ:__** | + | <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. Перечень известных ошибок, возникающих при конвертации, и рекомендаций по их решению> |
- | Сделайте следующее: | + | ==== Решение проблемы с уникальностью значений ключа в классах "База.КолонкаОбъекта" и "База.ПараметрИмпорта" ==== |
- | - Восстановите базу данных из сделанной перед конвертацией резервной копии (см. [[http://wiki.businessstudio.ru/docs/current/doku.php/ru/manual/install/dbcontrol#загрузка_базы_данных_из_файла|Загрузка базы данных из файла]]). | + | == Внимание! == |
- | - Откройте эту базу данных в Business Studio 4.0/4.1 (в зависимости от того, какой версии был бэкап). | + | Описываемый ниже способ исправления проблемы включает в себя удаление записей, что может нарушить логику работы пакетов импорта: ранее для таких ситуаций происходил импорт в одно поле из разных параметров файла (что в целом не совсем верно, но так пакеты ранее настроить было можно), теперь же, начиная с версии 4.2, такую загрузку, если в ней действительно есть необходимость, надо делать через отдельные этапы импорта. Используя приведённую ниже инструкцию, Вы не переделываете пакет импорта под новые требования, а просто исправляете препятствие для конвертации, удаляя дублирующие записи из списков соответствий параметров пакетов импорта. В связи с этим в дальнейшем может потребоваться доработка соответствующего пакета импорта. |
- | - Импортируйте в базе данных данные из соответствующего версии пакета. | + | ===== ===== |
+ | \\ | ||
+ | |||
+ | **Для решения проблемы сделайте следующее:** | ||
+ | |||
+ | - Восстановите базу данных из сделанной перед конвертацией резервной копии (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/load_db_from_backup|Загрузка базы данных из файла]]). | ||
+ | - Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации. | ||
+ | - Скачайте архив по ссылке под текстом данной статьи, распакуйте его содержимое в отдельную папку. В папке будет 5 файлов, название каждого из них будет содержать версию базы данных. | ||
+ | - Импортируйте в Вашу базу данных информацию из файла, номер версии в названии которого соответствует номеру версии базы, использующейся в Вашей версии Business Studio (соответствия номеров версий Business Studio можно посмотреть в [[ru/versions/versions|Истории версий]]). | ||
- Далее откройте справочник "Хранимые фильтры" (в Главном меню программы команда "Отчёты - Хранимые фильтры") и: | - Далее откройте справочник "Хранимые фильтры" (в Главном меню программы команда "Отчёты - Хранимые фильтры") и: | ||
- | * Если сообщение вида "Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа." - выполните фильтр "База.КолонкаОбъекта - дубли" (фильтр находится по пути Хранимые фильтры\Пользовательские фильтры\Поиск дублей в справочниках импорта). В окне с результатами фильтра записи будут отсортированы по убыванию значения в колонке "Количество(Владелец)". Для каждой из строк со значением > 1 необходимо: | + | - Выполните фильтр "База.КолонкаОбъекта - дубли" (фильтр находится по пути Хранимые фильтры\Пользовательские фильтры\Поиск дублей в справочниках импорта). В окне с результатами фильтра записи будут отсортированы по убыванию значения в колонке "Количество(Владелец)". Для каждой из строк со значением > 1 необходимо: |
- Вызвать от ячейки колонки "Владелец" правой кнопкой мыши контекстное меню и выбрать там пункт "Открыть свойства параметра". | - Вызвать от ячейки колонки "Владелец" правой кнопкой мыши контекстное меню и выбрать там пункт "Открыть свойства параметра". | ||
- | - Сделать скриншот открывшегося окна, сохранить его (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта). | + | - Сделать скриншот открывшегося окна, сохранить его (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта, в соответствии с которой надо будет внести правки в пакет в версии 4.2). |
- Удалить строки с одинаковыми значениями параметра "Параметр класса" (оставить только одну строку с таким значением). | - Удалить строки с одинаковыми значениями параметра "Параметр класса" (оставить только одну строку с таким значением). | ||
- | * Если сообщение вида "Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа." - выполните фильтр "База.ПараметрИмпорта - дубли" (фильтр находится по пути Хранимые фильтры\Пользовательские фильтры\Поиск дублей в справочниках импорта). В окне с результатами фильтра записи будут отсортированы по убыванию значения в колонке "Количество(Владелец)". Для каждой из строк со значением > 1 необходимо: | + | - Выполните фильтр "База.ПараметрИмпорта - дубли" (фильтр находится по пути Хранимые фильтры\Пользовательские фильтры\Поиск дублей в справочниках импорта). В окне с результатами фильтра записи будут отсортированы по убыванию значения в колонке "Количество(Владелец)". Для каждой из строк со значением > 1 необходимо: |
- | - Вызвать от ячейки колонки "Владелец" правой кнопкой мыши контекстное меню и выбрать там пункт "Открыть свойства параметра". | + | - Вызвать от ячейки колонки "Владелец" правой кнопкой мыши контекстное меню и выбрать там пункт "Копировать текст ячейки". |
- | - Сделать скриншот открывшегося окна, сохранить его (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта). | + | - Открыть справочник "Объект импорта". {{ ru/base/update/conversion_error_duplicate_key/conversion_error_duplicate_key_0001.png?nolink }} |
- | - Удалить строки с одинаковыми значениями параметра "Наименование" (оставить только одну строку с таким значением)." | + | - Вызвать от заголовка колонки "Название" окно быстрого фильтра, вставить туда строку, скопированную в предыдущем пункте в буфер обмена (Ctrl+V), провести поиск. {{ ru/base/update/conversion_error_duplicate_key/conversion_error_duplicate_key_0002.png?nolink }} |
- | - Сделайте резервную копию базы данных (см. [[http://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol#сохранение_базы_данных_в_файл|Сохранение базы данных в файл]]). | + | - От оставшейся единственной строки вызвать правой кнопкой мыши контекстное меню и выбрать там команду "Дополнительно - Поиск ссылок на объект". На этом этапе возможно 2 результата, для каждого из которых дальнейшие действия будут свои: |
+ | - Если в окне поиска ссылок пусто, закройте его и удалите строку справочника "Объект импорта", от которой вызывали поиск ссылок на объект. | ||
+ | - Если в окне поиска ссылок есть строка: | ||
+ | - Откройте её свойства по кнопке на верхней панели окна поиска ссылок. | ||
+ | - В открывшемся окне с помощью команды меню "Действия - Настройка колонок" выведите на показ колонку "Владелец" (выделите в открывшемся окне галочкой и нажмите кнопку "Применить"). | ||
+ | - Вызовите от заголовка выведенной на показ колонки "Владелец" правой кнопкой мыши контекстное меню и выберите в нём пункт "Открыть свойства параметра" - откроется окно настройки пакета импорта. | ||
+ | - В окне настройки пакета импорта откройте вкладку "Параметры" и сделать скриншот всего окна настройки пакета импорта при открытой этой вкладке (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта, в соответствии с которой надо будет внести правки в пакет в версии 4.2) | ||
+ | - Удалите со вкладки "Параметры" строки с одинаковыми значениями в колонке "Параметр класса" (оставить только одну строку с таким значением) и сохраните пакет нажатием соответствующей кнопки в нижней части окна его настройки. | ||
+ | - Сделайте резервную копию базы данных (см. [[https://www.businessstudio.ru/wiki/docs/current/doku.php/ru/manual/install/dbcontrol/create_backup|Сохранение базы данных в файл]]). | ||
- Попробуйте провести конвертацию этой базы данных. | - Попробуйте провести конвертацию этой базы данных. | ||
- | {{ ru/base/update/convert_error_no_links/the_budget_structure.xml|Скачать файл "the_budget_structure.xml" (14 Кб)}} | + | {{ ru/base/update/conversion_error_duplicate_key/search_duplicate_key_in_import_repository.zip|Скачать файл "search_duplicate_key_in_import_repository.zip" (16 Кб)}} |
+ | |||
+ | ==== Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователя" ==== | ||
+ | |||
+ | **Для решения проблемы сделайте следующее:** | ||
+ | - Восстановите базу данных из сделанной перед конвертацией резервной копии (см. [[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" }} | ||
+ | |||
+ | |||
+ | |||
- | {{tag>"Business Studio 4.2"}} | + | [<contextnavigator>] |
+ | {(rater>id=ru_update_conversion_error_duplicate_key|name=В процессе конвертации базы выдается сообщение "Нарушение уникальности значений ключа"|type=vote|trace=ip|img=:taggic.png|headline=off)} |